MySQL数据库基本语法

SQL

  • WHAT(SQL是什么?)
    Structured Query Language:结构化查询语⾔
  • WHY(为何要使用SQL?)
    难道仅仅使用SQL Server Management Studio操作数据库?
    应用程序如何与数据库打交道?
  • WHEN(何时使用?)
    对SQL Server执⾏所有的操作都可以
    程序中的增删改查
  • HOW(怎么使用?)
    ...

四大SQL语句

  1. 数据定义语句DDL:
    create、alter、drop、truncate(表结构)
  2. 数据操作语句DML:
    insert、delete、update、select(数据)
  3. 数据控制语句DCL:
    授权grant
    收回权限:revoke
  4. 事务控制语句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:wwwdream.sql
如此就把之前的表数据在新的数据库中进⾏恢复;之前的表及数据在新的数据库中都是存在的;

原文地址:https://www.cnblogs.com/TD1900/p/12087970.html