vlambda博客
学习文章列表

收藏|MySQL常用语法小结


回复“资源”获取独家整理的学习资料!

来源 | http://8rr.co/uCbS

一、基础


模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。

主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。

SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。

SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。

MySQL服务的启动、停止与卸载

在 Windows 命令提示符下运行:

启动: net start MySQL
停止: net stop MySQL
卸载: sc delete MySQL

MySQL数据类型

MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:

数字类型

整数: tinyint、smallint、mediumint、int、bigint
浮点数: float、double、real、decimal

日期和时间

 date、time、datetime、timestamp、year

字符串类型

字符串: char、varchar
文本: tinytext、text、mediumtext、longtext
二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob

登录

mysql -h 主机名 -u 用户名 -p
  • -h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;
  • -u : 所要登录的用户名;
  • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项

然后命令提示符会一直以 mysql> 加一个闪烁的光标等待命令的输入, 输入 exit 或 quit 退出登录。

注释

SQL 支持以下三种注释:

# 注释SELECT *FROM mytable;
-- 注释
/* 注释1 注释2 */

二、创建或导入数据库和删除数据库

创建数据库

使用 create database 语句可完成对数据库的创建, 创建命令的格式如下:

create database 数据库名 [其他选项];

例如我们需要创建一个名为 samp_db 的数据库并使用gbk字符, 在命令行下执行以下命令:

create database samp_db character set gbk;

创建一个数据库使用utf8字符,

create database db_name default charset utf8;

选择要用的数据库:

use samp_db;

MySQL语句以分号(;)作为语句的结束, 但use语句可以不加分号。

导入数据库

假如当前有一个完整的sql文件samp_db.sql,只需把它倒入数据库就行。首先还是create和use数据库(数据库名称不要求和sql文件同名),然后使用

source D:\worksp\samp_db.sql;

就可以将数据库导入到数据库服务器中,但可能要花费一段时间。

删除数据库

drop database samp_db;

三、创建表

使用如下命令创建表:

create table 表名称(列声明);

例如:

create table students(    id int unsigned not null auto_increment primary key,    name char(8) not null,    sex char(4) not null,    age tinyint unsigned not null,    tel char(13) null default "-");

查询所有的数据库:

show databases;

查询某个数据库中的所有表:

show tables;

查询某个表中的所有列(比如查询表customers):

show columns from customers;

查询某个表的详细信息:

describe customers;

四、修改表

alter table 语句用于创建后对表的修改, 基础用法如下:

添加列

基本形式:

alter table 表名 add 列名 列数据类型 [after 插入位置];

例如:在表的最后追加列 address:

alter table students add address char(60);

在名为 age 的列后插入列 birthday:

alter table students add birthday date after age;

修改列

基本形式:

alter table 表名 change 列名称 列新名称 新数据类型;

示例: 将表 tel 列改名为 telphone:

alter table students change tel telphone char(13) default "-";

将 name 列的数据类型改为 char(16):

alter table students change name name char(16) not null;

删除列

基本形式:

alter table 表名 drop 列名称;

示例: 删除 birthday 列:

alter table students drop birthday;

重命名表

基本形式:

alter table 表名 rename 新表名;

示例: 重命名 students 表为 workmates:

alter table students rename workmates;

删除整张表

基本形式:

drop table 表名;

示例: 删除 workmates 表:

drop table workmates;

五、表内的增删改查

插入数据

insert 语句可以用来将一行或多行数据插到数据库表中, 使用的一般形式如下:

insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);

其中 [] 内的内容是可选的, 例如, 要给 samp_db 数据库中的 students 表插入一条记录, 执行语句:

insert into students values(NULL, "王刚", "男", 20, "13811371377");

有时我们只需要插入部分数据, 或者不按照列的顺序进行插入, 可以使用这样的形式进行插入:

insert into students (name, sex, age) values("孙丽华", "女", 21);

查询数据

基本用法

select 语句常用来根据一定的查询规则到数据库中获取数据, 其基本的用法为:

select 列名称 from 表名称 [查询条件];

例如要查询 students 表中所有学生的名字和年龄, 输入语句

select name, age from students;

也可以使用通配符 * 查询表中所有的内容, 语句:

select * from students;

和insert或create配合

使用SELECT语句返回的列和值来填充INSERT语句的值。

intert into table_1 select c1, c2, from table_2;

这样做的前提是两个表具有相同的表结构,通过复制一个表得到一个相同表结构的语句为:

create table tasks_bak like tasks;

类似的还有将一个表的内容插入到一个新表

create table newtable as select * from mytable;

按条件查询where

where 关键词用于指定查询条件, 用法形式为:

select 列名称 from 表名称 where 条件;

where 子句不仅仅支持 "where 列名 = 值" 这种名等于值的查询形式, 对一般的比较运算的运算符都是支持的, 例如 =、>、<、>=、<、!= 以及一些扩展运算符 is [not] null、in、like 等等。还可以对查询条件使用 or 和 and 进行组合查询。

示例: 查询年龄在21岁以上的所有人信息:

select * from students where age > 21;

查询名字中带有 "王" 字的所有人信息:

select * from students where name like "%王%";

查询id小于5且年龄大于20的所有人信息:

select * from students where id<5 and age>20;

distinct关键字

这个关键字用来在查询的结果中去重,主要有以下几种用法:

作用于单列

select distinct [列名] from [表名];

例如

select distinct username from t_user;

假如username有重复的,只显示一次。

作用于多列

select distinct [列名1], [列名2] from [表名];

例如:

select distinct username, password form t_user;

这种方法是根据两列分别去重的结果来输出的,根据去重之后剩余行数较多的列来输出。如下里例子:

表内容为:

user_id username password
1 admin 123456
2 user 111111
3 user 222222

如果根据username和password去重,结果为:

username password
admin 123456
user 111111
user 222222

limit关键字

限制返回的行数。可以有两个参数,第一个参数为起始行(第一条数据的起始行为0);第二个参数为返回的总行数。

select * from [表名] limit 3; # 从第一条数据开始,共返回3行
select * from [表名] limit 1, 2; # 从第二条数据开始,共返回2行

更新语句

update 语句可用来修改表中的数据, 基本的使用形式为:

update 表名称 set 列名称=新值 where 更新条件;

使用示例: 将id为5的手机号改为默认的"-":

update students set tel=default where id=5;

将所有人的年龄增加1:

update students set age=age+1;

将手机号为 13288097888 的姓名改为 "张伟鹏", 年龄改为 19:

update students set name="张伟鹏", age=19 where tel="13288097888";

同样,update语句也可以和select语句结合使用。


删除语句

delete 语句用于删除表中的数据, 基本用法为:

delete from 表名称 where 删除条件;

使用示例: 删 除id为2的行:

delete from students where id=2;

删除所有年龄小于21岁的数据:

delete from students where age<20;

删除表中的所有数据:

delete from students;


往期推荐


欢迎加入我的知识星球,聊技术、说职场、侃社会。

头发很多的中年程序员DD和他的朋友们在这里期待你的到来!

近期预告
【技术圈】分享最近给阿里提的一个数据安全问题
【聊职场】说说公司股权与期权的那些门道

最近更新:
【技术圈】分享最近碰到的API网关的奇怪用法...
【社会人】社会入门最不能忽略的五险一金


我的星球是否适合你?

点击阅读原文看看我们都聊过啥?