【Mysql學習】mysql的使用入門
開始學習mysql ,記錄自己學習的一點記錄。
–建立資料庫company
mysql> create database company;
Query OK, 1 row affected (0.00 sec)
–要知道系統中有那些資料庫,可以使用如下命令來查詢:
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| company |
| mysql |
| test |
+——————–+
4 rows in set (0.00 sec)
information_schema –主要儲存了系統中的一些資料庫物件資訊,比如使用者表資訊,列資訊,許可權資訊, 字符集資訊,分割槽資訊。
mysql –儲存了系統的使用者許可權資訊
test –系統自動建立的資料庫,任何人都可以使用。
–查詢當前使用的資料庫。
mysql> select database();
+————+
| database() |
+————+
| NULL |
+————+
1 row in set (0.00 sec)
mysql> use company;
Database changed
mysql> select database();
+————+
| database() |
+————+
| company |
+————+
1 row in set (0.00 sec)
–刪除資料庫company
mysql> drop database company;
Query OK, 0 rows affected (0.03 sec)
-使用use dbname 選擇要連線的資料庫
mysql> use mysql;
Database changed
–檢視mysql資料庫中存在的資料表。
mysql> show tables;
+—————————+
| Tables_in_mysql |
+—————————+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| servers |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+—————————+
23 rows in set (0.03 sec)
–建立表,由於mysql的表名是以目錄的形式存在磁碟上的,所以表名要符合任何目錄名允許的字元。
mysql> create table dept(deptno int(4),deptname varchar(50));
Query OK, 0 rows affected (0.00 sec)
–檢視錶結構。
mysql> desc dept;
+———-+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———-+————-+——+—–+———+——-+
| deptno | int(4) | YES | | NULL | |
| deptname | varchar(50) | YES | | NULL | |
+———-+————-+——+—–+———+——-+
2 rows in set (0.00 sec)
mysql> create table employee (eid int(4),ename varchar(50), birthday date,deptno
int (4));
Query OK, 0 rows affected (0.01 sec)
—檢視構造表的ddl語句。
mysql> show create table employee G
*************************** 1. row ***************************
Table: employee
Create Table: CREATE TABLE `employee` (
`eid` int(4) DEFAULT NULL,
`ename` varchar(50) DEFAULT NULL,
`birthday` date DEFAULT NULL,
`deptno` int(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
–alter table 的使用方法。
–修改表名。
mysql> alter table employee rename emp;
Query OK, 0 rows affected (0.00 sec)
mysql> desc emp;
+———-+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———-+————-+——+—–+———+——-+
| eid | int(4) | YES | | NULL | |
| ename | varchar(50) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| deptno | int(4) | YES | | NULL | |
+———-+————-+——+—–+———+——-+
4 rows in set (0.00 sec)
mysql> show tables ;
+——————-+
| Tables_in_company |
+——————-+
| dept |
| emp |
+——————-+
2 rows in set (0.00 sec)
–修改表中列名。
ALTER TABLE TABNAME CHANGE COLUMN old_col_name new_col_name col_definition
–將birthday 改為 birthdate
mysql> alter table emp change birthday birdate date;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc emp;
+———+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———+————-+——+—–+———+——-+
| eid | int(4) | YES | | NULL | |
| ename | varchar(50) | YES | | NULL | |
| birdate | date | YES | | NULL | |
| deptno | int(4) | YES | | NULL | |
+———+————-+——+—–+———+——-+
4 rows in set (0.01 sec)
–修改表中欄位的型別
ALTER TABLE TABNAME MODIFY [COLUMN] column_definition [FIRST|AFTER col_name]
mysql> alter table emp modify eid int(5);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table emp modify sex char(2) first;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc emp;
+———+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———+————-+——+—–+———+——-+
| sex | char(2) | YES | | NULL | |
| eid | int(5) | YES | | NULL | |
| ename | varchar(50) | YES | | NULL | |
| birdate | date | YES | | NULL | |
| deptno | int(4) | YES | | NULL | |
+———+————-+——+—–+———+——-+
5 rows in set (0.01 sec)
比較一下 change 與modify的區別:
1 change 和 modify 都可以修改表的定義,不同的是change後面需要寫兩次列名,不方便,
2 但是change的優點是可以修改表中的列名稱,而modify則不能。
alter table tabname add new_column after/before ole_column;
alter table emp modify age int(3) first;
–增加表中的欄位
語法:
alter table tabname add [column] column_definition [first|after col_name]
mysql> alter table emp add column sex char(2);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc emp;
+———+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———+————-+——+—–+———+——-+
| eid | int(5) | YES | | NULL | |
| ename | varchar(50) | YES | | NULL | |
| birdate | date | YES | | NULL | |
| deptno | int(4) | YES | | NULL | |
| sex | char(2) | YES | | NULL | |
+———+————-+——+—–+———+——-+
5 rows in set (0.00 sec)
—
mysql> alter table emp add column sex char(2) after ename;
ERROR 1060 (42S21): Duplicate column name `sex`
–刪除表中的欄位。
mysql> alter table emp drop column sex;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
–指定新增欄位所在的位置。預設是新增到表中末尾。
mysql> alter table emp add column sex char(2) after ename;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc emp;
+———+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———+————-+——+—–+———+——-+
| eid | int(5) | YES | | NULL | |
| ename | varchar(50) | YES | | NULL | |
| sex | char(2) | YES | | NULL | |
| birdate | date | YES | | NULL | |
| deptno | int(4) | YES | | NULL | |
+———+————-+——+—–+———+——-+
5 rows in set (0.00 sec)
–注意:CHANGEFIRSTAFTER COLUMN 是mysql 在標準sql的擴充。在其他資料庫上不一定適用
–關於DML 語句這裡和sql標準一樣的就不再多做介紹了,重點說一下 insert 插入操作:
insert into tabname(col1,col2,…) values(val1,val2,…)
–mysql支援如下操作:
mysql> insert into dept(deptno ,deptname) values (1002,`ceo`);
Query OK, 1 row affected (0.00 sec)
mysql> insert into dept(deptno ,deptname) select 1003,`manager`;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from dept;
+——–+———-+
| deptno | deptname |
+——–+———-+
| 1001 | hr |
| 1002 | ceo |
| 1003 | manager |
+——–+———-+
3 rows in set (0.00 sec)
insert into tabname(col1,col2,…) select val1,val2,..[,select val1,val2,…]
其中 val與 col 的型別必須一致。否則:
mysql> insert into emp select 10001,`zhangsan`,`2010-12-30`,1001;
ERROR 1136 (21S01): Column count doesn`t match value count at row 1
mysql> desc emp;
+———+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———+————-+——+—–+———+——-+
| sex | char(2) | YES | | NULL | |
| eid | int(5) | YES | | NULL | |
| ename | varchar(50) | YES | | NULL | |
| birdate | date | YES | | NULL | |
| deptno | int(4) | YES | | NULL | |
+———+————-+——+—–+———+——-+
5 rows in set (0.02 sec)
順序不一致時,會報錯,欄位型別不一致時也會報錯。
相關文章
- 【Mysql 學習】mysql 的使用入門MySql
- MySQL學習筆記---入門使用MySql筆記
- Mysql學習筆記2--使用入門MySql筆記
- mysql 基礎命令入門學習MySql
- MySQL入門學習之——innodb lockMySql
- Mysql - 使用入門MySql
- MySQL入門學習之——實戰XtraBackupMySql
- MySQL入門學習之——實戰mysqldumpMySql
- MySQL入門學習之——MySQL錯誤解決彙總MySql
- MySQL入門學習之——原始碼安裝mysql5.5MySql原始碼
- MySQL入門學習之——mysql與oracle死鎖對比MySqlOracle
- 重新學習Mysql資料庫1:無廢話MySQL入門MySql資料庫
- MySQL-學習-快速入門/注入攻擊MySql
- MySQL基礎入門學習教程:mysql資料庫的實現原理MySql資料庫
- 【Mysql學習】LIMIT的使用MySqlMIT
- 【Mysql 學習】LIMIT 的使用MySqlMIT
- MySQL入門--mysql命令MySql
- MySQL入門--MySQL安全MySql
- 【mysql入門】MySql
- MySQL入門MySql
- MySQL入門系列:MySQL概述MySql
- Mysql入門【Mysql約束】MySql
- SQL快速入門 ( MySQL快速入門, MySQL參考, MySQL快速回顧 )MySql
- 入門入門入門 MySQL命名行MySql
- 【Mysql 學習】perror的使用方法MySqlError
- 【Mysql 學習】Mysql 怎樣使用記憶體MySql記憶體
- 入門MySQL——查詢語法練習MySql
- 如何入門 MySQLMySql
- MySQL 快速入門MySql
- mySql入門-(二)MySql
- MySQL入門——排序MySql排序
- MYSQL 入門全套MySql
- Mysql入門【JDBC】MySqlJDBC
- MYSQL入門全套MySql
- MySQL快速入門MySql
- MySQL 入門指南MySql
- MYSQL學習(二) --MYSQL框架MySql框架
- 學習MySQLMySql