1. 程式人生 > >MySQL---建表新增語句

MySQL---建表新增語句

  • 建立學生表,表名student,根據需求,需要儲存學號,姓名,性別、生日4列資訊:

  1. mysql -uroot -p               ---以root使用者本地連線MYSQL資料庫
  2. mysql>show databases;  --檢視當前可以使用哪些資料庫
  3. mysql>use test;               --使用test資料庫
  4. mysql>show tables;        --檢視資料庫下有哪些表
  5. mysql>create table student (sno int,sname varchar(20),sex char(1),birth date);            --建立學生表, 包括4列資訊
  6. mysql>show tables;       mysql>desc student;       --檢視student表列的資訊
  • 向student表中新增學生資訊,學號1,張三,男,1995-10-23


mysql> insert into student (sno,sname,sex,birth) values(1,'張三','男','1995-10-23');
Query OK, 1 row affected (0.00 sec)

mysql> select * from student;
+------+-------+------+------------+
| sno  | sname | sex  | birth      |
+------+-------+------+------------+
|    1 | 張三  | 男   | 1995-10-23 |
+------+-------+------+------------+
1 row in set (0.00 sec)
  • 向student表中新增學生資訊,學號2,李四,女,不填寫生日

mysql> insert into student (sno,sname,sex,birth) values(2,'李四','女','1995-10-23');
Query OK, 1 row affected (0.01 sec)
mysql> select * from student;
+------+-------+------+------------+
| sno  | sname | sex  | birth      |
+------+-------+------+------------+
|    1 | 張三  | 男   | 1995-10-23 |
|    2 | 李四  | 女   | 1995-10-23 |
+------+-------+------+------------+
2 rows in set (0.00 sec)
  • SQL – 空值 null

  1. null是SQL語言中的特殊值
  2. null值代表不確定,資料型別未知
  3. 屬於不明確、狀態未知的資料
  4. 上例中向表中插入一行資料,沒有指定‘李四’ 的生日,而且‘birth’這一列沒有指定預設值,會用 null 來填充
  • DML-insert語句

向student表中一次新增2名學生資訊

  1. 學號3,王五,男,1996-05-12;

  2. 學號4,趙六,性別未知,1996-03-15


mysql> insert into student values(3,'王五','男','1996-05-12'),(4,'趙六',null,'1996-3-15');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from student;
+------+-------+------+------------+
| sno  | sname | sex  | birth      |
+------+-------+------+------------+
|    1 | 張三  | 男   | 1995-10-23 |
|    2 | 李四  | 女   | 1995-10-23 |
|    3 | 王五  | 男   | 1996-05-12 |
|    4 | 趙六  | NULL | 1996-03-15 |
+------+-------+------+------------+
4 rows in set (0.00 sec)
  1. Insert into 表名 (列名1,列名2,....) values(列1對應值,列2對應值,....);
  2. Insert into 表名 values(列1對應值,列2對應值,....,列N對應值);   不指定列名需要在values中指定所有列對應的值,順序不能錯
  3. Insert into 表名 values(列1對應值,列2對應值,....,列N對應值),(列1對應值,列2對應值,....,列N對應值),(列1對應值,列2對應值,....,列N對應值).....; 一次插入多行,每行用逗號隔開,寫法僅限於MYSQL資料庫
  • DML-update語句示例:

          把sno等於0的性別修改為‘女’


mysql>  update student set sex='女' where sno=0;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

update 表名 set 列1=列1值, 列2=列2值 where 列N=列N值;

        一般更新語句需要加上where子句已定位要修改的行,如果不加將會修改所有行相應的列;如果修改多個列對應的值,用“逗號”隔開各個列 。

  • DML-delete語句示例:

刪除sno=0的行

mysql> delete from student where sno=2;

delete from 表名 where 列N=列N值;

有些資料庫如oracle可以省略delete後面的from,mysql不可以;一般刪除語句需要加上where子句已定位要刪除的行,如果不加會刪除整個表的所有行。

  • DDL建表語句CREATE TABLE其它用法

  1. 基於已有資料表建立新表並複製所有資料

create table student1 as select * from student; (CTAS建表方式)

  1. 基於已有資料表建立新表並複製部分資料

create table student2 as select * from student where gender='女';

  1. 基於已有資料庫建立新表僅複製表結構不包括行資料

create table student3 as select * from student where 1=2;

create table student4 like student; (MYSQL專有語法)