MySQL常用语法

1.什么是数据库?

一个装数据的大容器,有数据文件,日志文件,DBMS(数据库管理软件)

2.数据库是用来做什么的?

存储数据的

3.有哪几个数据库?

DB2 
ORACLE 
SQL Server
mySql

4.SQL语言分类

DDL语句:数据定义语言
    create(创建),drop(移除),alter(改变)等
    对数据库,表,索引等数据对象进行定义
DML语句:数据操作语言
    insert(添加)
    update(修改)
    delete(删除)
    select(查询)

DCL语句:数据控制语言
    主要控制数据库,表,字段,用户的访问权限和安全级别的授予

5.DDL语句

注意:每一条语句后面都要跟分号(;)或\g结束,或者ctrl+c

1.创建数据库语法:

create databases 数据库名称

代码示例:

mysql> create database lanqiao;
Query OK, 1 row affected (0.00 sec)

mysql> show databases
    -> \g

测试结果:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| lanqiao            |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
7 rows in set (0.00 sec)
  • information_schema:注意存储了数据中存储的数据库对象,比如用户表,列的信息。权限信息,字符集信息
  • mySql:存储系统的用户权限
  • world:测试案例表

2.选择数据库语法

use 数据库名称

代码测试:

mysql> use lanqiao;
Database changed

3.显示数据库中所有表语法

show tables;

4.删除数据库语法

drop database 数据库名称

代码测试:

mysql> drop database lanqiao
    -> \g
Query OK, 0 rows affected (0.03 sec)

数据库删除后,下面的所有的表都被删除

5.创建表语法

create table 表名(
列名1:列的类型
列名2:列的类型
列名3:列的类型

)

代码测试:

 mysql> create table emp(
    -> ename varchar(10),
    -> hiredate date,
    -> sal int,
    -> deptno int
    -> );
    Query OK, 0 rows affected (0.18 sec)
  • 一个表相当一个类,列名相当类的属性
  • 表名:等价于文件的名称可以为任意目录
  • 列名:表头
  • 列的类型:int , char,varchar ....
  • 注意:创建表的时候需要先选中数据库,就是制定将表创建到那个数据库中

6.显示表结构(desc语法)

代码测试:

mysql> desc emp
       -> \g

测试结果

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ename    | varchar(10) | YES  |     | NULL    |       |
| hiredate | date        | YES  |     | NULL    |       |
| sal      | int(11)     | YES  |     | NULL    |       |
| deptno   | int(11)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

7.显示创建表的语法

show create table emp;

测试代码:

mysql> show create table employ;

8.删除表

drop table 表名

9.修改列的类型语法

alter table 表名 modify 列名 列的类型;

测试代码:

mysql> alter table emp modify ename varchar(20);
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

10.添加列语法

alter table 表名 add column 列名 类型;

测试代码:

mysql> alter table emp add age int(3);
Query OK, 0 rows affected (0.24 sec)
Records: 0  Duplicates: 0  Warnings: 0

11.删除表的列:

alter table 表名 drop 列名;

测试代码:

mysql> alter table emp drop age;
Query OK, 0 rows affected (0.29 sec)
Records: 0  Duplicates: 0  Warnings: 0

12.修改列的名称

语法:
alter table 表名 change 原始名称 新的名称 列的类型;

测试代码:

mysql> alter table emp change ename name varchar(20);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

注意:

  • change和modify都可以修改表的定义
  • change后面需要写2次列名,不方便
  • 但是change的优点可以修改列的名称,modify不可以

13.表改名

语法:

alter table 表名 rename 新表名

代码:

mysql> alter table emp rename example;
Query OK, 0 rows affected (0.10 sec)

14.修改列的排列顺序

DML语句

DML是操作对数据库中表记录的操作
主要表的记录操作有:
插入(insert)
查询(select)
删除(delete)
更改(update)

1.插入(insert)一次添加多条

语法:

insert into tablename(列名1,列名2.....列名n)
,(值1,值2.......值n),
,(值1,值2.......值n),
,(值1,值2.......值n);

代码:

mysql> insert into example(name,age,date)values('csw',10,'1');
Query OK, 1 row affected (0.04 sec)

对于含可空列的,非空但是含有默认值的字段,自增字段,可以不用在insert后添加列名,values后面直接对应列就行

代码:

mysql> insert into emp(name)values('guang');
Query OK, 1 row affected (0.03 sec)

mysql> select * from emp;
+-------+------+------+
| name  | age  | date |
+-------+------+------+
| csw   |   10 | 1    |
| guang | NULL | NULL |
+-------+------+------+
2 rows in set (0.00 sec)

表结构(允许列为空):
+------+
| Null |
+------+
| YES  |
| YES  |
| YES  |
+------+

2.更改(update)

语法:

update 表名 set 列名1 = 值1,列名2 = 值2...列名n = 值n;
对表中的数据,可以通过update命令进行修改

代码:

mysql> update csw set  name = '关头强';
Query OK, 4 rows affected (0.04 sec)
Rows matched: 4  Changed: 4  Warnings: 0
//一般都会加上where语句

代码:

mysql> update csw set sal = '1000' where name = '关头强';
Query OK, 4 rows affected (0.03 sec)
Rows matched: 4  Changed: 4  Warnings: 0

代码:

mysql> select * from csw;

结果:

+-----------+-----------+------+-------+
| name      | hiredate  | sal  | depno |
+-----------+-----------+------+-------+
| 关头强    | 2017-4-15 | 1000 | 1000  |
| 关头强    | 2080-5-1  | 1000 | NULL  |
| 关头强    | 2080-5-1  | 1000 | NULL  |
| 关头强    | 2001-1-1  | 1000 | NULL  |
+-----------+-----------+------+-------+
4 rows in set (0.00 sec)

由于没有加where条件,所以将所有的name都修改了。而下面是只修改了depno=1000那一项

代码:

mysql> update csw set sal = sal+500 where depno = 1000;
Query OK, 1 row affected (0.14 sec)
Rows matched: 1  Changed: 1  Warnings: 0

结果:

mysql> select * from csw;
+-----------+-----------+------+-------+
| name      | hiredate  | sal  | depno |
+-----------+-----------+------+-------+
| 关头强    | 2017-4-15 | 1500 | 1000  |
| 关头强    | 2080-5-1  | 1000 | NULL  |
| 关头强    | 2080-5-1  | 1000 | NULL  |
| 关头强    | 2001-1-1  | 1000 | NULL  |
+-----------+-----------+------+-------+
4 rows in set (0.00 sec)

修改表中多列的数据:

        mysql> update emp set sal = 3000,deptno = 1 where name = 'aaa';
        Query OK, 1 row affected (0.04 sec)
        Rows matched: 1  Changed: 1  Warnings: 0
        
        mysql> select * from emp;

结果:

        +-------+------------+------+--------+
        | name  | hiredate   | sal  | deptno |
        +-------+------------+------+--------+
        | admin | 1999-09-09 | 1500 |      1 |
        | wuyu  | 2014-08-09 | 2000 |      2 |
        | aaa   | NULL       | 3000 |      1 |
        +-------+------------+------+--------+
        3 rows in set (0.00 sec)

3.删除(delete)

语法:

delete from tablename [where condition]

代码:

mysql> delete from csw where sal = '1000';
Query OK, 3 rows affected (0.03 sec)

结果:

mysql> select * from csw;
+-----------+-----------+------+-------+
| name      | hiredate  | sal  | depno |
+-----------+-----------+------+-------+
| 关头强    | 2017-4-15 | 1500 | 1000  |
+-----------+-----------+------+-------+
1 row in set (0.00 sec)

注意:如果不加条件会把表的所有信息删除

4.查询(select)

数据插入到表中,就可以使用select命令进行各式各样的查询
mysql> select * from csw;
+-----------+-----------+------+-------+
| name      | hiredate  | sal  | depno |
+-----------+-----------+------+-------+
| qiang     | 2017-4-15 | 3000 | 1000  |
| 小强      | 2080-5-1  | NULL | NULL  |
| 小强      | 2080-5-1  | NULL | NULL  |
| 打不死    | 2001-1-1  | NULL | NULL  |
+-----------+-----------+------+-------+

*表示要将所有的列信息全部显示出来.

    mysql> select name,sal from emp;
    +-------+------+
    | name  | sal  |
    +-------+------+
    | admin | 2000 |
    | wuyu  | 2000 |
    +-------+------+
    2 rows in set (0.00 sec)

注意:性能问题,推荐写列名,不要使用*号

5.查询不重复的记录.distinct 去除重复.###

    mysql> select * from dept;
    +--------+----------+
    | deptno | deptname |
    +--------+----------+
    |      1 | aa       |
    |      2 | aa       |
    |      3 | bb       |
    |      4 | cc       |
    +--------+----------+
    4 rows in set (0.00 sec)
    
    mysql> select distinct deptname from dept;
    +----------+
    | deptname |
    +----------+
    | aa       |
    | bb       |
    | cc       |
    +----------+
    3 rows in set (0.04 sec)

6.条件查询 where关键字可以显示用户指定的数据

逻辑运算符:

    =,>,<,>=,<=,!=,<>

测试语句:

    mysql> select * from dept where deptno > 2;
    +--------+----------+
    | deptno | deptname |
    +--------+----------+
    |      3 | bb       |
    |      4 | cc       |
    +--------+----------+
    2 rows in set (0.00 sec)

    逻辑运算符(or,and)
    mysql> select * from dept where deptno = 1 or deptname = 'cc';
    +--------+----------+
    | deptno | deptname |
    +--------+----------+
    |      1 | aa       |
    |      4 | cc       |
    +--------+----------+
    2 rows in set (0.02 sec)
    
    mysql> select * from emp where name ='admin' and sal >1000;
    +-------+------------+------+--------+
    | name  | hiredate   | sal  | deptno |
    +-------+------------+------+--------+
    | admin | 1999-09-09 | 2000 |      1 |
    +-------+------------+------+--------+
    1 row in set (0.00 sec)

重点 : 排序(order by)

语法:

    select * from 表名 [where 条件] [order by 列名1[desc|asc],列名2 [desc|asc]....列名n [desc|asc]]
    
    desc : 降序
    asc : 升序

语句:

    mysql> select * from emp order by sal desc ,deptno desc;
    +-------+------------+------+--------+
    | name  | hiredate   | sal  | deptno |
    +-------+------------+------+--------+
    | wuyu  | 2014-08-09 | 2000 |      2 |
    | admin | 1999-09-09 | 2000 |      1 |
    | wwwaa | NULL       | 1000 |      3 |
    +-------+------------+------+--------+
    3 rows in set (0.00 sec)

DCL语句

1.主要是DBA用来管理系统中的对象权限.

    创建一个数据库用户wuyu,具有对lq数据库中所有表的查询和添加权限.
    mysql> grant select,insert on lq.* to 'wuyu'@'localhost' identified by '123';
    Query OK, 0 rows affected, 1 warning (0.22 sec)

    C:\Users\Administrator>mysql -uwuyu -p123
    mysql -u用户名 -p密码

2.MySQL支持的数据类型

    1. 数值类型
        1. integer      java int
        2. smallint     32767~65535
        3. decimal,dec(m,d) 和doublt范围相同 
        4. float
        5. real  不知道
        6. double
        7. money
    2. 字符类型
        1. char         0~255 之间的字符
        2. varcahr      0~65535的字符  
        3. text         65535
        4. longtext     ~~~~~~
        5. VARBINARY(M) 可以存储多少M的字节.
    3. 日期和时间
        1. date         yyyy-mm-dd
        2. datetime     yyyy-mm-dd hh:MM:ss
        3. timestamp    时间戳
        4. time         hh:MM:ss
        5. year         yyyy

MySQL的左连接与右连接:http://www.jianshu.com/p/57e49960abb4

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,590评论 18 139
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,423评论 0 4
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,028评论 0 19
  • 西普教育(公众号:xipujiaoyu) 文 | 西妹 2017年4月22日,由中国信息产业商会信息安全产业分会主...
    西普教育阅读 491评论 0 0
  • 街头 没了灯光 她是个折翼的天使 在角落里冷得瑟瑟发抖 她,把自己蜷缩在一起 用那仅有的双脚 为身边的孩子取暖
    请叫我小心心阅读 262评论 0 1