1,基本概念
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
- 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- 外键:外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
2,基本查询常用指令
>show databases; #显示数据库管理系统的数据库列表,分号是必须的
>use mysql; #选择一个数据库用,数据库名字叫mysql
>show tables; #显示数据库的所有数据表,
>show columns from user; #显示当前数据库下某个数据表,显示的信息包括:数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息
>show index from user; #显示数据表的详细信息
>show table status from mysql like 'user'; #显示mysql数据库下user数据表的性能和统计信息,当然,like以后的信息可以省略。
3,python中的mysql:
首先需要安装python中的数据库模块,叫MySQLdb,linux执行pip install mysql-python (在相关依赖都搭建好了的情况下),然而并没有安装成功,先一放,回头再学。
4,连接 数据库相关操作
>mysql -u root -p #mysql进程开启的情况下登录到mysql,linux状态下链接数据库,退出用exit
>cd /usr/bin 然后>./mysqld_safe & #启动mysql服务器
>cd /usr/bin 然后>./mysqladmin -u root -p shutdown #关闭mysql服务器
> mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP #用grant添加一个用户,
-> ON TUTPRIALS.* #用户添加在了tutprials数据库中,权限是Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv。
-> TO 'daqing'@'localhost' #用户名叫daqing
-> IDENTIFIED BY '1234abcd'; #用户密码是1234abcd
5,数据库内部操作
>create database test1; #创建一个名字叫test1的数据库。
>drop database test1; #表示删除数据库test1
>select database(); #查看当前使用的是哪个数据库;
>use test1; #进入数据库test1,数据库创建的时候默认是空的
>create table test1.1 (name varchar(20)); #创建数据表test1.1,参数随意,基本格式:create table+表名+(参数)如:create table person(`name` char(20),`age` int,`high` int); 注意字段名需要加反引号,和值之间加空格,字段之间加逗号,指定 长度的话,在格式int,char等后面加括号,括号里是长度。
>drop table test1.1; #删除数据表test1.1,注意英文句号在此处有点特殊,因为test1.1在show tables的时候显示为1,因为.具有表示结构的作用,test1.1表示数据库test1下面的数据表1。
>discribe testA; #简写作desc,查看数据表testA的结构,查看之前已经创建:create table testA(`id`int(4),`name`char(20),`age` int(4));
>insert into testA values(1,'daqing',20) #增,对数据表插入一个字段,格式:insert into 表名称 (字段名1,字段名2,字段名3......) values(字段名1的值,字段名2的值,字段名3的值......);
>select id,name,age from testA; #查,从testA表中查看id,name,age的内容。结果如下
> select count(*) from testA; #查,count(*)表示返回有多少行。
>select * from testA; #查,查看testA表中所有的数据。
>update testA set age=22 where id=1; #改,在testA数据表中更改age字段,把id等于1的字段的age一项改成22。基本格式:update 表名称 set 字段名=“新值” where 表达式;
>delete from testA where id=2; #删,把testA表中id等于2的一行删除。
>truncate table testA; #删,清空数据表testA。
6,用户相关操作*
注:以下命令均需先以root身份登录mysql:mysql -uroot -p
1.添加新用户
(1)创建新用户:> insert into mysql.user(Host,User,Password) values("localhost","user1",password("password1"));
(2)为用户分配权限:
设置用户可以在本地访问mysql:grant all privileges on *.* to username@localhost identified by "password" ;
设置用户只能访问指定数据库:grant all privileges on 数据库名.* to username@localhost identified by "password" ;
(3)刷新系统权限表:>flush privileges;
2.查看MySql当前所有的用户:>SELECT DISTINCT User FROM mysql.user;
3.删除用户及其数据字典中包含的数据:>drop user 'xbb'@'localhost';