MySQL数据库基本语法
SQL
- WHAT(SQL是什么?)
Structured Query Language:结构化查询语⾔ - WHY(为何要使用SQL?)
难道仅仅使用SQL Server Management Studio操作数据库?
应用程序如何与数据库打交道? - WHEN(何时使用?)
对SQL Server执⾏所有的操作都可以
程序中的增删改查 - HOW(怎么使用?)
...
四大SQL语句
- 数据定义语句DDL:
create、alter、drop、truncate(表结构) - 数据操作语句DML:
insert、delete、update、select(数据) - 数据控制语句DCL:
授权grant
收回权限:revoke - 事务控制语句TCL:
开启事务:begin
提交:commit
回滚:rollback
数据库操作
创建数据库
SQL语句:
create database 数据库名;
create database stu_a;
-- 在建库时指定字符集,避免中文数据乱码的问题
create database stu_b default charset='utf8';
成功创建数据库后,数据库根目录下会自动创建数据库目录。
显示数据库结构
SQL语句:
show create database 数据库名;
可以查看数据库的相关信息(例如默认字符集等信息)。
删除数据库
SQL语句:
drop database 数据库名;
MySQL数据类型
MySQL提供的数据类型包括数值类型(整数类型和小数类型)、字符串类型、日期类型、复合类型(复合类型包括enum类型和set类型)以及⼆进制类型 。
decimal(length, precision)用于表示精度确定(小数点后数字的位数确定)的小数类型,length决定了该小数的最⼤位数,precision用于设置精度(小数点后数字的位数)。
例如:
decimal(5,2)表示小数取值范围:-999.99∼999.99
decimal(5,0)表示: -99999∼99999的整数。
char()与varchar():
例如对于简体中⽂字符集gbk的字符串⽽⾔,varchar(255)表示可以存储255个汉字,⽽每个汉字占用两个字节的存储空间。假如这个字符串没有那么多汉字,例如仅仅包含⼀个‘中’字,那么varchar(255)仅仅占用1个字符(两个字节)的储存空间;⽽char(255)则必须占用255个字符长度的存储空间,哪怕里面只储⼀个汉字。
表操作
创建数据库表
注意:在创建表之前,需要选择当前操作的数据库
Use 数据库名;
创建数据库表SQL语句:
use student;
create table stu(id int,name varchar(20));
create table stuinfo(
id int,
name char(20),
address char(50),
city char(50),
age int,
love char(50)
)default charset='utf8';
显示表结构
SQL语句:
desc 表名; -- 即可查看指定表的结构
SQL语句:
show create table 表名; -- 查看指定表的详细信息
删除表
SQL语句:
drop table 表名;
注意:删除表后,MySQL服务实例会自动删除该表结构定义的文件,以及数据、索引信息。该命令慎用!
删除字段
alter table 表名 drop 字段名
添加新字段
alter table 表名 add 新字段名 新数据类型 [新约束条件]
修改字段名
alter table 表名 change 旧字段名 新字段名 新数据类型
修改数据类型
alter table 表名 modify 字段名 新数据类型
修改表名
rename table 旧表名 to 新表名
数据的增、删、改、查
表记录的插入
SQL语句:
insert into 表名(字段列表) values(值列表);
提示:当插入的数据值的个数与表字段个数相同时,可以省略字段列表
insert stu(id,name) values(1,'newdream');
insert stu values(2,'newdream1');
一次插入多条记录
insert into 表名(字段列表) values (值列表1),(值列表2),...(值列表n);
insert into stu values(3,'new1'),(4,'new2'),(5,'new3');
使用insert...select插入结果
insert into 目标表名(字段列表1)
select(字段列表2) from 源表 where 条件表达式
insert into stu_bak(id,name)
select id,newname from stu where id>2;
注意:字段列表1与字段列表2的字段个数必须相同,且对应字段的数据类型尽量保持一致。
如果果源表与目标表的表结构完全相同,“(字段列表1)”可以省略。
复制表结构及数据到新表
create table 新表 select * from 旧表;
只复制表结构到新表
create table 新表 select * from 旧表 where 1=2;
修改表记录
update 表名 set 字段名1=值1,字段名2=值2,...,字段名n=值n
[where 条件表达式]
update stu set newname='new5' where id=1;
where 子句指定了表中的哪些记录需要修改。若省略了where子句,则表示修改表中的所有记录。
set子句指定了要修改的字段以及该字段修改后的值。
使用delete删除表记录
delete from 表名 where 条件表达式;
说明:如果没有指定wheree⼦句,那么该表的所有记录都将被删除,但表结构依然存在。
使用truncate清空表记录
truncate table 表名;
delete和truncate的区别
Delete不加WHERE条件是删除所有数据
Truncate不能够加WHERE条件
Delete可以加WHERE条件
Truncate会重置AUTO_INCREMENT
Delete可以进⾏回滚操作
表记录的查询
select 字段列表 from 表名
where条件表达式
表记录的查询—给列取别名
可以为字段列表中的字段名或表达式指定别名,中间使用as关键字分隔即可(as关键字可以省略)。多表查询时,同名字段前必须添加表名前缀,中间使用“.”分
隔。
Select id as ’学⽣学号’,newname ‘学⽣姓名’ from stu;
使用source命令
测试⼈员经常会和MySQL打交道,备份和恢复应该是最常用的操作了,那么通过直接执⾏sql⽂件⽆疑是最快捷的⽅式。
我们会把写好的sql语句保存成⼀个.sql⽂件进⾏备份;如果想在新的数据库中执⾏时,可以使用source命令进⾏恢复;
例如:在D盘的new⽂件夹中保存了dream.sql⽂件
(此⽅法只用在命令提示窗⼝)
第⼀步:可以先新建⼀个数据库;
第⼆步:use 新的数据库
第三步:Source d:\www\dream.sql
如此就把之前的表数据在新的数据库中进⾏恢复;之前的表及数据在新的数据库中都是存在的;