MySQL初级开发详细教程(转载)

一、 概念

二、 数据类型

1 数值数据类型

2 日期和时间类型

3 字符串类型

数据库">三、 数据库

四、

五、 SQL语言

1 数据查询语言 DQLData Query Language

2 数据操纵语言DMLData manipulation Language

3 数据定义语言 DDLData Define Language

4 数据控制语言 DCLData Control Language

六、 SQL子句



七、 约束 Constraints

1 NOT NULL

不允许、不接受空值

2 UNIQUE 唯一约束

3 PRIMARY KEY

PRIMARY KEY主键拥有自动定义的UNIQUE约束
主键,列或列集合唯一性

4 FOREIGN KEY

语法:一个表中的FOREIGN KEY指向另一个表中的PRIMARY KEY

?

1

FOREIGN KEY (字段) REFERENCES 另一个表(主键);

  • 1

5 CHECK

6 DEFAULT

八、 索引

九、 ALTER语句

ALTER TABLE 语句用于在已有的表中添加、修改或删除列。

十、 视图

十一、日期和时间函数

1 NOW()

返回当前的日期和时间

2016-10-12 15:13:38

2 CURDATE()

返回当前的日期

2016-10-12

3 CURTIME()

返回当前的时间

15:16:32

4 DATE()

提取 日期或日期/时间表达式的 日期部分,如下图:

执行语句:

?

1

SELECT DATE(start_date) FROM teacher;

结果如下图:

5 EXTRACT()

EXTRACT(Unit) 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

Unit 值如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

MICROSECOND

SECOND

MINUTE

HOUR

DAY

WEEK

MONTH

QUARTER

YEAR

SECOND_MICROSECOND

MINUTE_MICROSECOND

MINUTE_SECOND

HOUR_MICROSECOND

HOUR_SECOND

HOUR_MINUTE

DAY_MICROSECOND

DAY_SECOND

DAY_MINUTE

DAY_HOUR

YEAR_MONTH

6 DATE_ADD()

向日期添加指定的时间间隔。

DATE_ADD(date,INTERVAL expr type)
date
参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
type值如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

YEAR_MONTH

DAY_HOUR

DAY_MINUTE

DAY_SECOND

DAY_MICROSECOND

HOUR_MINUTE

HOUR_SECOND

HOUR_MICROSECOND

MINUTE_SECOND

MINUTE_MICROSECOND

SECOND_MICROSECOND

QUARTER

MONTH

MINUTE

SECOND

MICROSECOND

HOUR

WEEK

YEAR

举例:

现在,我们希望向 “OrderDate” 添加 2 天,这样就可以找到付款日期。
我们使用下面的 SELECT 语句:

?

1

2

SELECT OrderId,DATE_ADD(OrderDate,INTERVAL 2 DAY) AS OrderPayDate

FROM Orders

  • 12

7 DATE_SUB()

DATE_SUB(date,INTERVAL expr type)
参数及用法同DATE_ADD()
从日期减去指定的时间间隔

8 DATEDIFF()

DATEDIFF(date1,date2)
返回值有正负
返回两个日期之间的天数。

9 DATE_FORMAT()

语法格式:
DATE_FORMAT(date,format)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

%x  年,其中的星期一是周的第一天,4 位,与 %v 使用

%X  年,其中的星期日是周的第一天,4 位,与 %V 使用

%w  周的天 (0=星期日, 6=星期六)

%Y  年,4 位

%y  年,2 位

%v  周 (01-53) 星期一是一周的第一天,与 %x 使用

%V  周 (01-53) 星期日是一周的第一天,与 %X 使用

%W  星期名

%u  周 (00-53) 星期一是一周的第一天

%U  周 (00-53) 星期日是一周的第一天

%T  时间, 24-小时 (hh:mm:ss)

%s  秒(00-59)

%S  秒(00-59)

%r  时间,12-小时(hh:mm:ss AM 或 PM)

%p  AM 或 PM

%m  月,数值(00-12)

%l  小时 (1-12)

%k  小时 (0-23)

%j  年的天 (001-366)

%i  分钟,数值(00-59)

%I  小时 (01-12)

%h  小时 (01-12)

%H  小时 (00-23)

%d  月的天,数值(00-31)

%e  月的天,数值(0-31)

%D  带有英文前缀的月中的天

%c  月,数值

%b  缩写月名

%f  微秒

%M  月名

%a  缩写星期名

十二、 函数

一般常用函数

语法格式:
SELECT function() FROM

?

1

2

3

4

5

6

7

MIN(column) 返回某列的最低值(有则不会返回NULL,没有则返回NULL)

MAX(column) 返回某列的最高值(没有则返回NULL)

COUNT(DISTINCT column)  返回相异结果的数目

SUM(column) 返回某列的总和

COUNT(*)    返回被选行数

COUNT(column)   返回某列的行数(不包括 NULL 值)

AVG(column) 返回某列的平均值

1GROUP BY

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

常用于返回某月、某组的销售额、消费水平等等

?

1

2

SELECT Customer,SUM(OrderPrice) FROM Orders

GROUP BY Customer

2 HAVING

SQL 中增加 HAVING 子句原因是,WHERE子句中无法使用计函数。

?

1

2

3

SELECT Customer,SUM(OrderPrice) FROM Orders

GROUP BY Customer

HAVING SUM(OrderPrice)<2000

3 UCASE()

UCASE 函数把字段的值转换为大写。

?

1

SELECT UCASE(column_name) FROM table_name

4 LCASE()

UCASE 函数把字段的值转换为小写。

?

1

SELECT LCASE(column_name) FROM table_name

5 MID()

MID 函数用于从文本字段中提取字符。
语法:

?

1

SELECT MID(column_name,start[,length]) FROM table_name

length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。
start 必需。规定开始位置(起始值是 1)。
column_name 必需。要提取字符的字段。

6 LEN()

LEN() 函数返回文本字段中值的长度。(若NULL,则返回NULL
举例:

?

1

SELECT LEN(City) as LengthOfCity FROM Persons;

7 ROUND()

ROUND() 函数用于把数值字段舍入为指定的小数位数。
语法:

?

1

SELECT ROUND(column_name,[decimals]) FROM table_name

column_name 必需。要舍入的字段。
decimals 可选。规定要返回的小数位数。不选默认为0.

举例:

?

1

SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products;

8 FORMAT()

FORMAT() 函数用于对字段的显示进行格式化。

?

1

2

SELECT ProductName, FORMAT(Now(),'YYYY-MM-DD') as PerDate

FROM Products;

十三、 其他语句

1 UNION

(字段要相等)UNION 操作符用于合并两个或多个 SELECT 语句的结果集
UNION会合并相同的字段数据
UNION ALL会选择所有的数据,而不会合并重复的数据

2 SELECT INTO

3 AUTO_INCREMENT 自动增长

默认AUTO_INCREMENT的开始值是1,自动增长1

创建表时添加

?

1

2

3

4

5

6

7

CREATE TABLE Persons (

P_Id int NOT NULL AUTO_INCREMENT,

 

LastName varchar(255) NOT NULL,

 

PRIMARY KEY (P_Id)

)

要让 AUTO_INCREMENT 序列以其他的值起始的语法:

?

1

ALTER TABLE Persons AUTO_INCREMENT=100;

4 NULL

IS [NOT] NULL

1) NULL 值的处理方式与其他值不同。
2)NULL 用作未知的或不适用的值的占位符。
3)注释:无法比较 NULL 0;它们是不等价的。

举例:

?

1

2

SELECT LastName,FirstName,Address FROM Persons

WHERE Address IS NULL

5 NULL函数

我们有时希望 NULL 值为 0

MySQLIFNULL()函数表示:

?

1

2

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))

FROM Products;

COALESCE()意义同IFNULL()

?

1

2

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))

FROM Products;

 

 

 

 

 

 

 

MySQL添加用户、删除用户与授权

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):

1.新建用户

  1.1 登录MYSQL

  @>mysql -u root -p

  @>密码

  1.2 创建用户:

  mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));

  这样就创建了一个名为:test 密码为:1234 的用户。

  注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。

  1.3 然后登录一下:

  mysql>exit;

  @>mysql -u test -p

  @>输入密码

  mysql>登录成功

 

2.为用户授权

  授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"; 

  2.1 登录MYSQL(有ROOT权限),这里以ROOT身份登录:

  @>mysql -u root -p

  @>密码

  2.2 首先为用户创建一个数据库(testDB)

  mysql>create database testDB;

  2.3 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):

   mysql>grant all privileges on testDB.* to test@localhost identified by '1234';

   mysql>flush privileges;//刷新系统权限表

  格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"; 

  2.4 如果想指定部分权限给一用户,可以这样来写:

  mysql>grant select,update on testDB.* to test@localhost identified by '1234';

  mysql>flush privileges; //刷新系统权限表

  2.5 授权test用户拥有所有数据库的某些权限:   

  mysql>grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";

     //test用户对所有数据库都有select,delete,update,create,drop 权限。

  //@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)

 //localhost授权:加上一句grant all privileges on testDB.* to test@localhost identified by '1234';即可。

 

3. 删除用户

   @>mysql -u root -p

  @>密码

   mysql>Delete FROM user Where User='test' and Host='localhost';

   mysql>flush privileges;

   mysql>drop database testDB; //删除用户的数据库

删除账户及权限:>drop user 用户名@'%';

        >drop user 用户名@ localhost; 

 

4. 修改指定用户密码

    @>mysql -u root -p

    @>密码

    mysql>update mysql.user set password=password('新密码') where User="test" and Host="localhost";

    mysql>flush privileges;

 

5. 列出所有数据库

  mysql>show database;

 

6. 切换数据库

  mysql>use '数据库名';

 

7. 列出所有表

  mysql>show tables;

 

8. 显示数据表结构

  mysql>describe 表名;

 

9. 删除数据库和数据表

  mysql>drop database 数据库名;

  mysql>drop table 数据表名;

 

 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值