MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,后来目前属于Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
show databases '查看数据库列表信息的命令是'
mysql> use mysql ' 查看数据库中的数据表信息命令是'
mysql> show tables;
mysql> describe user; '显示数据表的结构(字段)命令'
information_ schema:虚拟库类似与linux中的proc ,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等 performance_ schema :主要存储数据库服务器的性能参数 能优化性能 mysql :授权库,主要存储系统用户的权限信息 sys :主要存储数据库服务器的性能参数
SQL语言
DDL:数据定义语言 DDL语句用于创建数据库对象,如库,表,索引等
DML:数据操纵语言 DML语句用于对表中的数据进行管理
DQL:数据查询语言 DQL是数据查询语句,只有一条:SELECT
DCL:数据控制语言 设置或查看用户的权限,或者创建用户
下面将针对这四种类型语言进行详细的介绍
create table 表名(字段名称 字段类型 字段约束,字段02的名称 字段02的类型) 存储引擎,字符集 字段01名称 属性名称 自定义 字段01类型: int 整型 可以跟数字 这里的int是宽度 默认是11位 double 浮点型 小数点后两位 八字节 float(5,2) 浮点型 这个就会限制 80.126 也可以 输出过来就是80.12 8000.2 就不行 最多是999 decimal(5,2)定点型 80.126可以成功会给警告显示数据有问题 80.16 这里同上 都是四舍五入 = = =字符串类型测试: CHAR、 VARCHAR 作用:用于存储用户的姓名、爱好、发布的文章等 CHAR, 列的长度固定为创建表时声明的长度: 0~ 255 ; VARCHAR列中的值为可变长字符串,长度: 0~ 65535 注:在检索的时候, CHAR列删除了尾部的空格,而VARCHAR则保留这些空格
字段01约束 : 非空约束 :内容 不允许为空 主键约束: 非空且唯一 典型的表示 唯一性 身份证号是主键约束 primary key 默认值: 假如没有填数据 默认预先设定的值填写 自增特性: id 相当于table里面的行数 auto increment
存储引擎 :myisam和innodb 字符集 :UTF-8 中文字符集
mysql> create database dog; '创建一个名为dog的数据库'
mysql> use dog; '进入dog的数据库'
mysql> create table gousheng(id char(3) not null primary key,
name varchar(10) not null,score int(3),address varchar(50) default 'baomi');
Query OK, 0 rows affected (0.01 sec)
'创建一个名为gousheng的表 ,第一个字段名为id 限制为3位数只内0——990 并且不能为空,而且具有唯一性,不能重复,第二个字段是name名字 10个字符以内的,'
'不能为空,第三个字段是成绩,三位数之内,可以为空,第四个字段为家庭地址,50个字符以内的,如果不填写的话,默认是baomi '
字段和类型必不可少的
删除指定的数据表:drop table [数据库名.]表名
删除指定的数据库:drop database 数据库名
mysql> drop table kkk.bbb; '//删除表高危命令谨慎操作'
Query OK, 0 rows affected (0.00 sec)
mysql> drop database kkk; '//删除库高危命令谨慎操作'
Query OK, 0 rows affected (0.00 sec)
mysql> insert into gousheng(id,name,score,address)values(1,'goupeng',90,'guizhou');
Query OK, 1 row affected (0.00 sec)
mysql> select * from gousheng;
+----+---------+-------+---------+
| id | name | score | address |
+----+---------+-------+---------+
| 1 | goupeng | 90 | guizhou |
+----+---------+-------+---------+
mysql> insert into gousheng values(2,'gousheng',56,'nanjing');
Query OK, 1 row affected (0.00 sec)
mysql> select * from gousheng;
+----+----------+-------+---------+
| id | name | score | address |
+----+----------+-------+---------+
| 1 | goupeng | 90 | guizhou |
| 2 | gousheng | 56 | nanjing |
+----+----------+-------+---------+
2 rows in set (0.00 sec)
mysql> update gousheng set name='shang' where id=1; '将id为1的名字改为shang'
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from gousheng
-> ;
+----+----------+-------+---------+
| id | name | score | address |
+----+----------+-------+---------+
| 1 | shang | 90 | guizhou |
| 2 | gousheng | 56 | nanjing |
+----+----------+-------+---------+
2 rows in set (0.00 sec)
mysql> update gousheng set name='zhen'; '将所有的名字都改成zhen'
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> select * from gousheng;
+----+------+-------+---------+
| id | name | score | address |
+----+------+-------+---------+
| 1 | zhen | 90 | guizhou |
| 2 | zhen | 56 | nanjing |
+----+------+-------+---------+
2 rows in set (0.00 sec)
mysql> delete from gousheng where id=1; '删除id为1的那一列'
Query OK, 1 row affected (0.01 sec)
mysql> select * from gousheng;
+----+------+-------+---------+
| id | name | score | address |
+----+------+-------+---------+
| 2 | zhen | 56 | nanjing |
+----+------+-------+---------+
1 row in set (0.00 sec)
mysql> delete from gousheng; '删表内所有数据,与drop不同的是 他只是删除数据,表的架构还有 '
alter add命令格式:alter table 表名 add字段 类型 其他;
例如,在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0:
mysql> alter table MyClass add passtest int(4) default '0';
1) 加索引
mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
例子: mysql> alter table employee add index emp_name (name);
2) 加主关键字的索引
mysql> alter table 表名 add primary key (字段名);
例子: mysql> alter table employee add primary key(id);
3) 加唯一限制条件的索引
mysql> alter table 表名 add unique 索引名 (字段名);
例子: mysql> alter table employee add unique emp_name2(cardnumber);
4) 删除某个索引
mysql> alter table 表名 drop index 索引名;
例子: mysql>alter table employee drop index emp_name;
5) 增加字段
mysql> ALTER TABLE table_name ADD field_name field_type;
6) 修改原字段名称及类型
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
7) 删除字段
MySQL ALTER TABLE table_name DROP field_name;
DQL是数据查询语句,只有一条:SELECT
mysql> select name from gousheng; '过滤出name这一列的数据'
+----------+
| name |
+----------+
| shang |
| zhen |
| gousheng |
+----------+
3 rows in set (0.00 sec)
mysql> select name,score from gousheng; '过滤出姓名和成绩两列成绩'
+----------+-------+
| name | score |
+----------+-------+
| shang | 54 |
| zhen | 56 |
| gousheng | 66 |
+----------+-------+
3 rows in set (0.00 sec)
mysql> select name,address from gousheng where id=1 or id=3; '过滤出id为1和id为3的名字和地址,'
+----------+---------+
| name | address |
+----------+---------+
| shang | dongbei |
| gousheng | dongbei |
+----------+---------+
2 rows in set (0.00 sec)
创建用户登录权限grant
mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;
'grant all 放通所有权限'
'//all privileges:所有权限'
'%:所有终端 '
' identified 鉴定;辨认'
'基本格式 to接允许登录用户和终端,by接密码,with 接允许的选项'
Query OK, 0 rows affected, 1 warning (0.00 sec)
删除用户登录权限revoke
mysql> revoke all privileges on *.* from 'root'@'%';
Query OK, 0 rows affected (0.00 sec)