DDL语言
数据定义语言
库和表的管理
一、库的管理
创建、修改、删除
二、表的管理
创建、修改、删除
创建:create
修改:alter
删除:drop
库的管理
#一、库的管理
#1 、库的创建
#案例:创建库Books
CREATE DATABASE IF NOT EXISTS books;
#2 、库的修改
#更改库的字符集
ALTER DATABASE books CHARACTER SET gbk;
#3 、库的删除
DROP DATABASE IF EXISTS books;
表的管理
#二、表的管理
#1 、表的创建*
#案例:创建表book
USE books;
CREATE TABLE IF NOT EXISTS book (
id INT , #编号
bName VARCHAR ( 20 ) , #图书名
price DOUBLE , #价格
authorId INT , #作者编号
publishDate DATETIME
) ;
DESC book;
#案例:创建表author
CREATE TABLE IF NOT EXISTS author (
id INT ,
au_name VARCHAR ( 20 ) ,
nation VARCHAR ( 10 )
) ;
DESC author;
#2 、表的修改
#a、修改列名
ALTER TABLE book CHANGE COLUMN publishDate pubDate DATETIME ;
#b、修改列的类型或约束
ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP ;
#c、添加列
ALTER TABLE author ADD COLUMN annual DOUBLE ;
#d、删除列
ALTER TABLE author DROP COLUMN annual;
#e、修改表名
ALTER TABLE author RENAME TO book_author;
#3 、表的删除
DROP TABLE IF EXISTS book_author;
#通用写法
DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;
DROP TABLE IF EXISTS 旧表名;
CREATE TABLE 新表名;
#4 、表的复制
INSERT INTO author VALUES
( 1 , '村上春树' , '日本' ) ,
( 2 , '莫言' , '中国' ) ,
( 3 , '冯唐' , '中国' ) ,
( 4 , '金庸' , '中国' ) ;
SELECT * FROM author;
#1 、仅仅复制表的结构
CREATE TABLE copy LIKE author;
#2 、复制表的结构+ 数据
DROP TABLE copy2;
CREATE TABLE copy2
SELECT * FROM author;
#只复制部分数据
CREATE TABLE copy3
SELECT id, au_name
FROM author
WHERE nation = '中国' ;
#仅仅复制某些字段
CREATE TABLE copy4
SELECT id, au_name
FROM author
WHERE 0 ;
练习
#练习
#1. 创建表dept1
NAME NULL ? TYPE
id INT ( 7 )
NAME VARCHAR ( 25 )
CREATE TABLE dept1 (
id INT ( 7 ) ,
`name` VARCHAR ( 25 )
) ;
#2. 将表departments中的数据插入新表dept2中
CREATE TABLE dept2
SELECT department_id, department_name
FROM myemployees. departments;
#3. 创建表emp5
NAME NULL ? TYPE
id INT ( 7 )
First_name VARCHAR ( 25 )
Last_name VARCHAR ( 25 )
Dept_id INT ( 7 )
CREATE TABLE emp5 (
id INT ( 7 ) ,
first_name VARCHAR ( 25 ) ,
last_name VARCHAR ( 25 ) ,
dept_id INT ( 7 )
) ;
#4. 将列Last_name的长度增加到50
ALTER TABLE emp5 MODIFY COLUMN last_name VARCHAR ( 50 ) ;
#5. 根据表employees创建employees2
CREATE TABLE employee2 LIKE myemployees. employees;
#6. 删除表emp5
DROP TABLE IF EXISTS emp5;
#7. 将表employees2重命名为emp5
ALTER TABLE employee2 RENAME TO emp5;
#8. 在表dept和emp5中添加新列test_column,并检查所作的操作
ALTER TABLE emp5 ADD COLUMN test_colum INT ;
#9. 直接删除表emp5中的列 dept_id
ALTER TABLE emp5 DROP COLUMN dept_id;
数据类型
#常见的数据类型
#一、整型
#1 、如何设置无符号和有符号
CREATE TABLE tab_int (
t1 INT ,
t2 int UNSIGNED
) ;
DESC tab_int;
INSERT INTO tab_int VALUES ( - 123456 , - 123456 ) ;
#二、小数
CREATE TABLE tab_float (
f1 FLOAT ( 5 , 2 ) ,
f2 DOUBLE ( 5 , 2 ) ,
f3 DECIMAL ( 5 , 2 )
) ;
SELECT * FROM tab_float;
INSERT INTO tab_float VALUES ( 123.45 , 123.45 , 123.45 ) ;
INSERT INTO tab_float VALUES ( 123.456 , 123.456 , 123.456 ) ;
INSERT INTO tab_float VALUES ( 123.4 , 123.4 , 123.4 ) ;
INSERT INTO tab_float VALUES ( 1523.4 , 1523.4 , 1523.4 ) ;
#三、字符型
CREATE TABLE tab_char (
c1 ENUM ( 'a' , 'b' , 'c' )
) ;
INSERT INTO tab_char VALUES ( 'a' ) ;
INSERT INTO tab_char VALUES ( 'b' ) ;
INSERT INTO tab_char VALUES ( 'c' ) ;
INSERT INTO tab_char VALUES ( 'm' ) ;
INSERT INTO tab_char VALUES ( 'A' ) ;
SELECT * FROM tab_set;
CREATE TABLE tab_set (
s1 SET ( 'a' , 'b' , 'c' , 'd' )
) ;
INSERT INTO tab_set VALUES ( 'a' ) ;
INSERT INTO tab_set VALUES ( 'A,B' ) ;
INSERT INTO tab_set VALUES ( 'a,c,d' ) ;
#四、日期型
CREATE TABLE tab_date (
t1 DATETIME ,
t2 TIMESTAMP
) ;
INSERT INTO tab_date VALUES ( NOW ( ) , NOW ( ) ) ;
SELECT * FROM tab_date;
SHOW VARIABLES LIKE 'time_zone' ;
SET time_zone= '+9:00' ;