方式一
CREATE DATABASE mysql #如果创建子数据库时没有声明字符集,则默认使用数据库的字符集(UTF8)
方式二
CREATE DATABASE mysql CHARACTER SET'GBK' #显式的指明了创建数据库的字符集
方式三(推荐)
CREATE DATABASE IF NOT EXOSTS mysql CHARACTER SET'UTF8' #如果创建的数据库已经存在,则创建不成功。不会报错
#查看当前连接中的数据库有哪些 SHOW DATEBASES #切换数据库 USE mytese2 #切换当前数据库中的表 SHOW TABLES #查看当前使用的数据库 SELECT DATEBASE() #查看指定数据库的表 SELECT TABLES FROM XXX
#查看数据库的字符集 SHOW CREATE DATEBASE XXX #修改数据库的字符集 ALTER DATEBASE XXX CHARACTER SET "UTF8" #数据库是不能改名的,可视化工具的改名是重新创建数据库
#方式一 DROP DATABASE XXX #方式二(推荐) DROP DATEBASE IF EXIST XXX #不要删啊!不要跑路啊!
类型 | 类型举例 |
---|---|
整数类型 | TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT |
浮点类型 | FLOAT、DOUBLE |
定点数类型 | DECIMAL |
位类型 | BIT |
日期时间类型 | YEAR、TIME、DATE、DATETIME、TIMESTAMP |
文本字符串类型 | CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT |
枚举类型 | ENUM |
集合类型 | SET |
二进制字符串类型 | BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB |
JSON类型 | JSON对象、JSON数组 |
空间数据类型 | 单值:GEOMETRY、POINT、LINESTRING、POLYGON; 集合:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION |
其中,常用的几类类型介绍如下:
数据类型 | 描述 |
---|---|
INT | 从-231到231-1的整型数据。存储大小为 4个字节 |
CHAR(size) | 定长字符数据。若未指定,默认为1个字符,最大长度255 |
VARCHAR(size) | 可变长字符数据,根据字符串实际长度保存,必须指定长度 |
FLOAT(M,D) | 单精度,占用4个字节,M=整数位+小数位,D=小数位。 D<=M<=255,0<=D<=30,默认M+D<=6 |
DOUBLE(M,D) | 双精度,占用8个字节,D<=M<=255,0<=D<=30,默认M+D<=15 |
DECIMAL(M,D) | 高精度小数,占用M+2个字节,D<=M<=65,0<=D<=30,最大取值范围与DOUBLE相同。 |
DATE | 日期型数据,格式'YYYY-MM-DD' |
BLOB | 二进制形式的长文本数据,最大可达4G |
TEXT | 长文本数据,最大可达4G |
#方式一 CREATE TABLE mytal #方式二(推荐) CREATE TABLE IF NULL EXISTS mytal(id INT,emp_name VARCHAR(15),hire_date DATE); #VARCHAR() 必须指明长度 #方式三——基于现有的表创建表,同时可以导入数据 CREATE TABLE mytal AS SELECT * FROM employees #查询表结构 #方法一 DESC mytal; #方法二 SHOW CREATE TABLE mytal #如果创表时没有指明字符集,则默认使用库的字符集
表的复制
#包含数据 CREATE TABLE mytal AS SELECT* FROM employees #只有表的框架 CREATE TABLE mytal AS SELECT* FROM employees WHERE 1<>1;
ALTER TABLE mytal ADD salary DOUBLE(10,2)#小数点后两位 ALTER TABLE mytal ADD salary DOUBLE(10,2) FIRST; ALTER TABLE mytal ADD salary DOUBLE(10,2) AFTER emp_name;
修改数据类型、长度、默认值
ALTER TABLE mytal MODIFY emp_name VARCHAR(25)#将emp_name的长度变为25 ALTER TABLE mytal MODIFY emp_name VARCHAR(25) DEFAULT'AAA'#默认值为aaa
ALTER TABLE mytal change salary monthly_salary DOUBLE(10,2) #也可以在改名的同时修改长度 ALTER TABLE mytal change salary monthly_salary DOUBLE(10,3)
ALTER TABLE mytal DROP COLUMN e-mail #删除e-mail
#方式一(推荐) RENAME TABLE mytal TO mytal2 #方式二 ALTER TABLE mytal RENAME TO mytal2
#不光将表的结构删除,同时将表数据也删除,然后施放表空间 DROP TABLE mytal #建议使用 DROP TABLE IF EXISTS mytal #注意表被删除无法撤销,所以…要不跑路?
#删除表中数据,表结构保留 TRUNCATE TABLE mytal
COMMIT;#提交 SET autocommit = false; DELETE FROM mytal ROLLBACK;#回滚 SELECT* FROM mytal;#数据回来了 COMMIT;#提交 SET autocommit = false; TRUNCATE TABLE mytal; ROLLBACK;#回滚 SELECT* FROM mytal;#数据没有回来
在实际开发中使用DELETE FROM以避免事故。
#1. 创建数据库test01_office,指明字符集为utf8。并在此数据库下执行下述操作 CREATE DATABASE IF NOT EXISTS test01_office CHARACTER SET 'UTF8'; #2. 创建表dept01 /* 字段 类型 id INT(7) NAME VARCHAR(25) */ DROP TABLE dept01; USE test01_office; CREATE TABLE IF NOT EXISTS dept01(id INT,name VARCHAR(25)); #3. 将表departments中的数据插入新表dept02中 CREATE TABLE IF NOT EXISTS dept02 AS SELECT * FROM atguigudb.departments #4. 创建表emp01 /* 字段 类型 id INT(7) first_name VARCHAR (25) last_name VARCHAR(25) dept_id INT(7) */ CREATE TABLE IF NOT EXISTS emp01(id INT(7),first_name VARCHAR(25),last_name VARCHAR(25),dept_id INT(7)) #5. 将列last_name的长度增加到50 ALTER TABLE emp01 MODIFY last_name VARCHAR(50) #6. 根据表employees创建emp02 CREATE TABLE emp02 AS SELECT* FROM atguigudb.employees #7. 删除表emp01 DROP TABLE emp01; #8. 将表emp02重命名为emp01 RENAME TABLE emp02 TO emp01; #9.在表dept02和emp01中添加新列test_column,并检查所作的操作 ALTER TABLE dept02 ADD test_column INT(4); ALTER TABLE emp01 ADD test_column INT(4); #10.直接删除表emp01中的列 department_id ALTER TABLE emp01 DROP COLUMN department_id; # 1、创建数据库 test02_market CREATE DATABASE test02_market; # 2、创建数据表 customers CREATE TABLE customers( c_num int, c_name varchar(50), c_contact varchar(50), c_city varchar(50), c_birth date) # 3、将 c_contact 字段移动到 c_birth 字段后面 ALTER TABLE customers MODIFY c_contact varchar(50) AFTER c_birth; # 4、将 c_name 字段数据类型改为 varchar(70) ALTER TABLE customers MODIFY c_name varchar(70); # 5、将c_contact字段改名为c_phone ALTER TABLE customers CHANGE c_contact c_phone varchar(50); # 6、增加c_gender字段到c_name后面,数据类型为char(1) ALTER TABLE customers ADD c_gender char(1) AFTER c_name; # 7、将表名改为customers_info RENAME TABLE customers TO customers_info # 8、删除字段c_city ALTER TABLE customers_info DROP COLUMN c_city;