mysql sql语句

1.数据库和表的操作

创建 create
修改 alter
删除 drop
查看 show

1.1创建数据库

CREATE DATABASE [IF NOT EXISTS] db_name    [create_specification [, create_specification] ...]

create_specification:    

[DEFAULT] CHARACTER SET charset_name 

[DEFAULT] COLLATE collation_name

CHARACTER SET:指定数据库采用的字符集

COLLATE:指定数据库字符集的比较方式(校对规则)

1.创建一个名称为mydb1的数据库
create database mydb1;
2.创建一个使用utf-8字符集的mydb2数据库。
 create database mydb2 character set utf8;
3.创建一个使用utf-8字符集,并带校对规则的mydb3数据库。
create database mydb3 character set utf8 collate utf8_general_ci;

1.2 查看删除数据库

显示数据库语句:

SHOW DATABASES

显示数据库创建语句:

SHOW CREATE DATABASE db_name

数据库删除语句:

DROP DATABASE  [IF EXISTS]  db_name

1.查看当前数据库服务器中的所有数据库
show databases; 
2.查看前面创建的mydb2数据库的定义信息
show create database mydb2;
3.删除前面创建的mydb3数据库
drop database mydb3;

1.3 修改,备份、恢复数据库

ALTER  DATABASE  [IF NOT EXISTS] db_name [alter_specification[,alter_specification] ...]

alter_specification:   

 [DEFAULT] CHARACTER SET charset_name 

 [DEFAULT] COLLATE collation_name

备份数据库表中的数据

  mysqldump -u 用户名 –p密码 数据库名 > 文件名.sql

恢复数据库

  Source 文件名.sql

1.把其中mydb2的字符集修改为gbk
alter database mydb2 character set gbk; 

1.4 创建表

CREATE TABLE table_name

(

  field1  datatype,

  field2  datatype,

  field3  datatype

)character set charsetname collate collatename

field:指定列名 datatype:指定列类型

 
MySQL基本数据类型

分类

数据类型

说明

数值类型

BIT(M)  bit  bit(8)

TINYINT [UNSIGNED] [ZEROFILL]  byte

BOOL,BOOLEAN   boolean

SMALLINT [UNSIGNED] [ZEROFILL] short

INT [UNSIGNED] [ZEROFILL] int

BIGINT [UNSIGNED] [ZEROFILL] long

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]  float

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] double

位类型。M指定位数,默认值1,范围1-64

带符号的范围是-128到127。无符号0到255。

使用0或1表示真或假

2的16次方

2的32次方

2的64次方

M指定显示长度,d指定小数位数

表示比float精度更大的小数

文本、二进制类型

CHAR(size) char(20)  max—255   abc           

VARCHAR(size)  varchar(20) 65535   abcde String

BLOB   LONGBLOB  大的二进制数据

TEXT(clob)          LONGTEXT(longclob)  大文本数据

固定长度字符串

可变长度字符串

二进制数据

大文本

时间日期

DATE/DATETIME/TimeStamp

日期类型(YYYY-MM-DD)  (YYYY-MM-DD HH:MM:SS),TimeStamp表示时间戳,它可用于自动记录insert、update操作的时间

VARCHAR、BLOB和TEXT类是变长类型。
注意:创建表前,要先使用use db语句使用库。
显示数据库中的所有表 show tables
 1.创建一个person表
 create table person(name varchar(20),age int);
1.5 修改表

ALTER TABLE table ADD (column datatype [DEFAULT expr] [, column datatype]...);

ALTER TABLE table MODIFY  (column datatype [DEFAULT expr][, column datatype]...);

ALTER TABLE table DROP (column);

 1.为person添加一个account列
 alter table person add account int;
2.CRUD
Insert语句    (增加数据)
Update语句  (更新数据)
Delete语句   (删除数据)
Select语句 (查找数据)
2.1 使用 INSERT 语句向表中插入数据

INSERT INTO tablename [(column [, column...])]VALUES  (value [, value...]);

插入的数据应与字段的数据类型相同
数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
在values中列出的数据位置必须与被加入的列的排列位置相对应。
字符和日期型数据应包含在单引号中。
插入空值,不指定或insert into table value(null)  // “”
 
2.2 使用 update语句修改表中数据

UPDATE tbl_name SET col_name1=expr1 [, col_name2=expr2 ...][WHERE where_definition]  

UPDATE语法可以用新值更新原有表行中的各列。
SET子句指示要修改哪些列和要给予哪些值。
WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。
2.3 使用 delete语句删除表中数据。

delete from tbl_name  [WHERE where_definition] 

如果不使用where子句,将删除表中所有数据。
Delete语句不能删除某一列的值(可使用update
使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。
删除表中数据也可使用TRUNCATE TABLE 语句,它和delete有所不同,原理是先删除表再创建新表。
 
Select语句比较复杂所以在下一节讲解
3.Select语句
3.1基本select语句

SELECT [DISTINCT] *|{column1, column2. column3..} FROM  table;

Select 指定查询哪些列的数据。
column指定列名。
*号代表查询所有列。
From指定查询哪张表。
DISTINCT可选,指显示结果时,是否剔除重复数据
create table student(
    id int,
    name varchar(20),
    chinese float,
    english float,
    math float
);

insert into student(id,name,chinese,english,math) values(1,'张小明',89,78,90);
insert into student(id,name,chinese,english,math) values(2,'李进',67,53,95);
insert into student(id,name,chinese,english,math) values(3,'王五',87,78,77);
insert into student(id,name,chinese,english,math) values(4,'李一',88,98,92);
insert into student(id,name,chinese,english,math) values(5,'李来财',82,84,67);
insert into student(id,name,chinese,english,math) values(6,'张进宝',55,85,45);
insert into student(id,name,chinese,english,math) values(7,'黄蓉',75,65,30);
练习:
查询表中所有学生的信息。
查询表中所有学生的姓名和对应的英语成绩。
过滤表中重复数据
3.2select语句2
在select语句中可使用表达式对查询的列进行运算

SELECT*|{column1expression, column2expression..}FROM  table;

select语句中可使用as语句

SELECT column as 别名 from 表名;

练习
在所有学生分数上加10分特长分。
统计每个学生的总分。
使用别名表示学生分数。
3.3where子句
where子句中经常使用的运算符

比较运算符

>   <   <=   >=   =    <>

大于、小于、大于(小于)等于、不等于

BETWEEN  ...AND...

显示在某一区间的值

IN(set)

显示在in列表中的值,例:in(100,200)

LIKE ‘张pattern’

模糊查询

IS NULL

判断是否为空

逻辑运算符

and   &

多个条件同时成立

or    |

多个条件任一成立

not   !

不成立,例:where not(salary>100);

Like语句中,% 代表零个或多个任意字符,_ 代表一个任意字符,例first_name like ‘_a%’;

练习:
查询姓名为李一的学生成绩
查询英语成绩大于90分的同学
查询总分大于200分的所有同学
查询英语分数在 8090之间的同学。
查询数学分数为89,90,91的同学。
查询所有姓李的学生成绩。
查询数学分>80,语文分>80的同学。
查询英语>80或者总分>200的同学
3.3使用order by 子句排序查询结果

SELECTcolumn1, column2. column3..FROM  table order by column asc|desc

Order by 指定排序的列,排序的列即可是表中的列名,也可以是select 语句后指定的列名。
Asc升序、Desc降序

ORDER BY 子句应位于SELECT语句的结尾。

3.4合计函数count

Select count(*)|count(列名) from tablename [WHERE where_definition] 

3.5合计函数sum

Select sum(列名){,sum(列名)…} from tablename   [WHERE where_definition]

3.6合计函数AVG

Select avg(列名){,avg(列名)…} from tablename [WHERE where_definition]  

3.7合计函数AVG

Select max(列名) from tablename  [WHERE where_definition]

资料

http://www.w3school.com.cn/sql/index.asp

原文地址:https://www.cnblogs.com/malinkang/p/3335346.html