①MYSQL数据库基本操作-DDL
1.DDL的解释
DDL(Data Definition Language),数据定义语言,包括以下内容:
-
对数据库的常用操作
-
对表结构的常用操作
-
修改表结构
2.对数据库的常用操作
功能 | SQL |
---|---|
查看所有的数据库 | show databases; |
创建数据库 | create database [if not exists] mydb1 [charset=utf8] |
切换 (选择要操作的) 数据库 | use mydb1; |
删除数据库 | drop database [if exists] mydb1; |
修改数据库编码 | alter database mydb1 character set utf8; |
-- DDL操作
-- 产看所有数据库
show DATABASES;
-- 创建数据库
CREATE DATABASE mydb1;
CREATE DATABASE if NOT EXISTS mydb1; # 创建数据库 如果存在了就不创建了
-- 选择使用哪一个进行操作
USE mydb1;
-- 删除数据库
drop DATABASE mydb1;
drop DATABASE if EXISTS mydb1;
-- -- 修改数据库的编码
-- alter DATABASE test CHARACTER set utf8;
3、对表结构的常用操作-创建表
创建表格式
create table [if not exists]表名( 字段名1 类型[(宽度)] [约束条件] [comment '字段说明'], 字段名2 类型[(宽度)] [约束条件] [comment '字段说明'], 字段名3 类型[(宽度)] [约束条件] [comment '字段说明'] )[表的一些设置];
创建表是构建一张空表,指定这个表的名字,这个表有几列,每一列叫什么名字,以及每一列存储的数据类型
use mydb1;
create table if not exists student(
sid int,
name varchar(20),
gender varchar(20),
age int,
birth date,
address varchar(20),
score double
);
3.对表结构的常用操作-创建表
数值类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 byte | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或**INTEGER** | 4 bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 bytes | (-3.402 823 466 E+38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度浮点数值 |
DOUBLE | 8 bytes | (-1.797 693 134 862 315 7 E+308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度浮点数值 |
DECIMAL | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
decimal(M,D) --->>>decimal(5,2) 123.45 总的有效位数是5位,小数位数是两位
字符串类型
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串 |
<u>VARCHAR**</u> | 0-65535 bytes | 变长字符串 |
TINYBLOB | 0-255 bytes | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
TEXT | 0-65 535 bytes | 长文本数据 |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
日期类型
类型 | 大小( bytes) | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
4.对表结构的操作
功能 | SQL |
---|---|
查看当前数据库的所有表名称 | show tables; |
查看指定某个表的创建语句 | show create table 表名; |
查看表结构 | desc 表名 |
删除表 | drop table 表名 |
修改表添加列
alter table 表名 add 列名 类型(长度) [约束];
-- ALTER TABLE test_pymysql add name VARCHAR(20);
-- DESC test_pymysql;
修改列名和类型
-- 语法:alter table 表名 change 旧列名 新列名 类型(长度) 约束;
ALTER TABLE test_pymysql CHANGE id gender VARCHAR(20);
DESC test_pymysql;
删除列的操作
-- 删除列的操作
-- 语法:alter table 表名 drop 列名;
ALTER TABLE test_pymysql DROP name;
DESC test_pymysql;
修改表名
-- rename table 表名 to 新表名;
rename TABLE test_pymysql to test_stu;
5.增、删、改、查
数据的插入
语法:`insert into 表 (列名1,列名2,列名3...) values (值1,值2,值3...); //向表中插入某些`
`insert into 表 values (值1,值2,值3...); //向表中插入所有列`
-- INSERT INTO student VALUES(10001, '周杰轮', 31, '男'), (10002, '王力鸿', 33, '男'), (10003, '蔡依琳', 35, '女'), (10004, '林志灵', 36, '女'), (10005, '刘德滑', 33, '男'), (10006, '张大山', 10, '男'), (10007, '刘志龙', 11, '男'), (10008, '王潇潇', 33, '女'), (10009, '张一梅', 20, '女'), (10010, '王一倩', 13, '女'), (10011, '陈一迅', 31, '男'), (10012, '张晓光', 33, '男'), (10013, '李大晓', 15, '男'), (10014, '吕甜甜', 36, '女'), (10015, '曾悦悦', 31, '女'), (10016, '刘佳慧', 21, '女'), (10017, '项羽凡', 23, '男'), (10018, '刘德强', 26, '男'), (10019, '王强强', 11, '男'), (10020, '林志慧', 25, '女');
数据的修改
语法:update 表名 set 字段名=值,字段名=值...; 所有行的都会修改
update 表名 set 字段名=值,字段名=值... where 条件; 这个就不是所有行
-- 将所有学生的地址修改为重庆
update student set address = '重庆’;
-- 讲id为1004的学生的地址修改为北京
update student set address = '北京' where id = 1004
-- 讲id为1005的学生的地址修改为广州,成绩修成绩修改为100
update student set address = '广州',score=100 where id = 1005
-- 将id为10010的同学的性别改为男
-- UPDATE student1 SET gender='男' WHERE id = 10010;
数据的删除
delete from 表名 [where 条件];
truncate table 表名 或者 truncate 表名
-- 1.删除sid为1004的学生数据
delete from student where sid = 1004;
-- 2.删除表所有数据
delete from student;
-- 3.清空表数据
truncate table student;
truncate student;
注意:delete和truncate原理不同,delete只删除内容,而truncate类似于drop table ,可以理解为是将整个表删除,然后再创建该表;