MySQL基础命令总结
一、常用基础命令
1、MySQL功能型语句
show databases 查询所有数据库; use database 切换数据库; create database [if not exits] 库名 创建数据库; drop database [if exits] 库名 删除数据库; show 建库语句 查询数据库创建; character set 设置数据库的字符集; alter database 数据库名 character set 编码集 修改数据库的编码集;
2、建表语句
drop table if exists test_a; CREATE TABLE `test_a` ( `id` varchar(10) NOT NULL, `username` varchar(10) NOT NULL, `password` varchar(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; drop table if exists test_a_description; CREATE TABLE `test_a_description` ( `id` varchar(10) NOT NULL, `age` varchar(10) , `address` varchar(50) , `parent_id` varchar(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、字段属性
not null:没有给值数据的时候为默认值,而varchar的默认值不设置的话为空; auto_increment:定义列为自增的属性,一般是用于主键自增,数值会在上一行基础上加1; primary key:关键字用于定义列为主键,也可以多列定义组合主键,列间以逗号分隔; engine:设置存储引擎,charset设置编码; default null:设置默认值null; default 值:设置默认值。 我们在建表的时候可以根据需要选择字段设置。
USE cw_test01;
-- 创建表
CREATE TABLE category(
cid INT auto_increment,
cname VARCHAR(20), PRIMARY key(cid)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 创建测试表 CREATE TABLE test1( tid INT, tdate DATE );
4、快速复制相同的表结构
create table 新表名 like 旧表名;
-- 创建一个表结构与 test1 相同的 test2表 create table test2 like test1; -- 查看表结构 DESC test2;
5、查看表
-- 查看当前数据库中的所有表名 SHOW TABLES; -- 显示当前数据表的结构 DESC category; -- 查看创建表的SQL语句 SHOW CREATE TABLE category;
6、删除表
-- 直接删除 test1 表 drop table test1; -- 先判断 再删除test2表 drop table if EXISTS test2;
7、 修改表
1)需求: 将category表 改为 category1
rename table category to category1;
2)向表中添加列, 关键字add
需求: 为分类表添加一个新的字段为 分类描述 cdesc varchar(20) alter table category1 add cdesc varchar(20) DEFAULT "分类描述";
3)修改表中列的 数据类型或长度 , 关键字 MODIFY
需求:对分类表的描述字段进行修改,类型varchar(50) alter table category1 MODIFY cdesc varchar(50);
4)修改列名称 , 关键字 CHANGE
需求: 对分类表中的 desc字段进行更换, 更换为 description varchar(30) alter table category1 change cdesc description VARCHAR(30);
5)删除列 ,关键字 DROP
需求: 删除分类表中description这列 alter table category1 drop description;
8、DML 操作表数据进行增删改查
# 创建学生表 CREATE TABLE student( sid INT, sname VARCHAR(20), age INT, sex CHAR(1), address VARCHAR(40) );
1)插入表数据:
INSERT INTO student (sid,sname,age,sex,address) VALUES(1,'孙悟 空',20,'男','花果山'); INSERT INTO student VALUES(2,'孙悟饭',10,'男','地球'); INSERT INTO category1 (cname) VALUES('白骨精');
2)update 更新数据
需求:带条件的修改,将sid 为1的学生,性别改为女 UPDATE student SET sex = '女' WHERE sid = 1;
3)delete和truncate 删除表数据
需求:删除表student中sid=2的记录 delete from student where sid=2; 需求:删除所有表所有数据 delete from student; truncate table student; #truncate效率比较高
9、DQL 查询表中数据(重点)
1)准备数据
#创建员工表
表名 emp
表中字段:
eid 员工id,int
ename 姓名,varchar
sex 性别,char
salary 薪资,double
hire_date 入职时间,date
dept_name 部门名称,varchar
#创建员工表
drop table if EXISTS emp; CREATE TABLE emp( eid INT, ename VARCHAR(20), sex CHAR(1), salary DOUBLE, hire_date DATE, dept_name VARCHAR(20) );
#添加数据
INSERT INTO emp VALUES(1,'孙悟空','男',7200,'2013-02-04','教学部');
INSERT INTO emp VALUES(2,'猪八戒','男',3600,'2010-12-02','教学部');
INSERT INTO emp VALUES(3,'唐僧','男',9000,'2008-08-08','教学部');
INSERT INTO emp VALUES(4,'白骨精','女',5000,'2015-10-07','市场部');
INSERT INTO emp VALUES(5,'蜘蛛精','女',5000,'2011-03-14','市场部');
INSERT INTO emp VALUES(6,'玉兔精','女',200,'2000-03-14','市场部');
INSERT INTO emp VALUES(7,'林黛玉','女',10000,'2019-10-07','财务部');
INSERT INTO emp VALUES(8,'黄蓉','女',3500,'2011-09-14','财务部');
INSERT INTO emp VALUES(9,'吴承恩','男',20000,'2000-03-14',NULL);
INSERT INTO emp VALUES(10,'孙悟饭','男', 10,'2020-03-14',财务部);
INSERT INTO emp VALUES(11,'兔八哥','女', 300,'2010-03-14',