MYSQL

一、概念:

   数据: data

   数据库: DB

   数据库管理系统:DBMS

   数据库系统:DBS

   MySQL:数据库  

   mysql:客户端命令(用来连接服务或发送sql指令)

   SQL:结构化查询语言 ,其中MySQL支持这个。

   SQL语言分为4个部分:DDL、DML、DQL、DCL

   

二、连接数据库:

   mysql -h 主机名 -u 用户名  -p密码  库名

   

   C:\>mysql  --采用匿名账号和密码登陆本机服务

   C:\>mysql -h localhost -u root -proot   --采用root账号和root密码登陆本机服务

   C:\>mysql -u root -p   --推荐方式默认登陆本机

Enter password: ****


   C:\>mysql -u root -p 数据库  --直接进入lamp61数据库的方式登陆

   

三、授权:

--实例:创建zhangsan账号,密码123,授权123库下所有表的增/删/改/查数据,来源地不限

mysql> grant select,insert,update,delete on 123.* to zhangsan@'%' identified by '123';

Query OK, 0 rows affected (0.00 sec)


四、SQL的基本操作

                    1.  登录  mysql -h localhost -u root -p 

                    2.  设置编码

                        此时输入 set character_set_client=gbk;告诉我客户端这边的文字编码

                        再输入set character_set_results=gbk; 告诉mysql希望返回的结果集编码;

                    3.  创建一个user数据库

                        create database user;

                    4.  查看当前用户的所有数据库

                        show databases;

                    5.  尝试删除aaa数据库

                        drop database if exists aaa;

                    6.  查看aaa数据库的建库语句

                        show create database aaa\G

                    7. 选择进入aaa数据库

                        use aaa;

                    8. 创建表

                        create table tt(

                        -> name varchar(16), --姓名

                        -> age int,         --年龄

                        -> email varchar(50)-- 邮箱

                        -> );

                    

                    9.  查看tt表结构

                        desc tt

                    10. 查看数据库中的所有表

                        show tables;

                    11. 查看tt表的建表语句

                         show create table tt\G

                    12. 删除表

                        drop table tt;

                    13. 添加

                        insertintott(name,age,email) values('zhangsan',20,'zhangsan@163.com');

                        inserintott values

                        -> ('aa',21,'aa@166.com'),

                        -> ('bb',24,'bb@166.com'),

                        -> ('cc',26,'cc@166.com');

                        为stu表添加一个email字段并放置到name后,若在第一使用first

                        alter table stu add email varchar(32) not null after name;

                    14. 查看

                        select * from tt;

                    15. 修改

                        pdate tt set name='zhangsan' where id='1';

                    16. 删除

                         delete from tt where id='3';

                         将stu表中的email字段删除

                         alter table stu drop email;

                    17. 为stu表的age字段添加普通索引(索引名为in_age)

                        alter table stu add index  in_age(age);

                    18. 删除索引

                        alter table stu drop index in_age;

                    19. 导出aa数据库中的stu表信息

                        D:\>mysqldump -u root -p aa stu > aasql    不可有;

                    20. 导入数据

                        D:\>mysql -u root -p aa


mysql>\h   -- 快捷帮助

mysql>\c   -- 取消命令输入

mysql>\s   -- 查看当前数据库的状态

mysql>\q   -- 退出mysql命令行

五、 MySQL数据库的数据类型:

MySQL的数据类型分为四大类:数值类型、字串类型、日期类型、NULL。

5.1 数值类型:

tinyint(1字节)

smallint(2字节)

mediumint(3字节)

int(4字节)

bigint(8字节)

float(4字节)   float(6,2)

double(8字节)  

decimal(自定义)字串形数值

5.2 字串类型

普通字串

char  定长字串    char(8)  

varchar 可变字串 varchar(8)

二进制类型

tinyblob

blob

mediumblob

longblob

文本类型

tinytext

text      常用于

mediumtext

longtext

enum枚举

set集合

5.3 时间和日期类型:

date  年月日

time  时分秒

datatime 年月日时分秒

timestamp 时间戳

year 年

5.4 NULL值

NULL意味着“没有值”或“未知值”

可以测试某个值是否为NULL

不能对NULL值进行算术计算

对NULL值进行算术运算,其结果还是NULL

0或NULL都意味着假,其余值都意味着真


MySQL的运算符:

算术运算符:+ - * / % 

比较运算符:= > < >= <= <> != 

数据库特有的比较:in,not in, is null,is not null,like, between and 

逻辑运算符:and or not

 六、 表的字段约束:

unsigned 无符号(正数)

zerofill 前导零填充

auto_increment  自增

default 默认值

not null  非空

PRIMARY KEY 主键 (非null并不重复)

unique唯一性   (可以为null但不重复)

index 常规索引

七: 建表语句格式:

create table 表名(

   字段名 类型 [字段约束],

   字段名 类型 [字段约束],

   字段名 类型 [字段约束],

   ...

  );