概念
- DBMS
- 数据管理的独立性
- 有效完成数据存取
- 数据完整性和安全性
- 数据集中管理
- 并发存储于故障恢复
- SQL
结构化查询语言SQL(STRUCTURED QUERY LANGUAGE)是最重要的关系数据库操作语言,
并且它的影响已经超出数据库领域,得到其他领域的重视和采用,
如人工智能领域的数据检索,第四代软件开发工具中嵌入SQL的语言等; - SQL接口
Oracle,PL/SQL
SQL SERVER - 软件包格式
软件包管理器特有的格式
通用二进制格式
源程序 - 端口:TCP/3306
mysql用户
mysql组
1
2#yum install mysql-server
#service mysqld start
5. mysql客户端:
交互式模式
批处理模式
交互式模式中的命令类别
- 客户端命令 mysql>help
- 显示出来的都是客户端命令
- 服务器端命令 mysqld
- 都必须使用语句结束符,默认为分号;
初始化:1
2
3
4
5server mysqld start 第一次,看上面的就是初始化;
设定mysql的root密码
/usr/bin/mysqladmin -u root password 'new-password' //input mysql passwd
/usr/bin/mysqladmin -u root -h server41.example.com password 'new-password'
netstat -ntlp | grep mysql
rpm安装的mysql的文件在:/var/lib/mysql/mysql/
1 | #rpm -ql mysql-server | less |
可以看到mysql。。
mysql:
-u USERNAME不指明的话默认是root
-p passwd不指明的话默认是空密码
-h MYSQL_SERVER不指明的话默认是本地地址
用户:USERNAME@HOST
mysql -uroot -p -h 192.168.0.107这样登不上去,认为这是通过远程主机登陆
mysql -uroot -p -h 127.0.0.1 这样可以登上去,这个实在本地主机登陆
因为mysql的用户名应该是USERNAME@HOST
在linux上同一台主机上使用socket进行连接
/var/lib/mysql/mysql.sock 使用这种方式连接要快的多;
不在同一个主机上,就要使用tcp协议进行连接;
在windows上使用共享memory进行连接;
mysql> SHOW DATABASES;
显示当前的数据库:
information_schema位于内存中;
mysql
test
如果在/var/lib/mysql/中创建一个文件,再用SHOW DATABASES看时,
就会多一个数据库;
设置客户端默认使用的一个数据库;
USE db-name;
例如:
USE mytext;
## 关系数据库对象
- 表
- 行:row
- 列:field,column(也叫)
- 定义字段名称,数据类型,类型修饰符(约束)
- 字符
- CHAR(n)
- VARCHAR(n)
- BINARY(n)
- VARBINARY(n)
- TEXT(n)
- BLOB(n)
- 数值
- 精确数值
- 整形
- TINYINT
- SMALLINT
- MEDIUMINT
- INT
- BIGINT
- 日期
- DATE
- TIME
- DATETIME
- STAMP
- 布尔
- 索引(加速表的查询)
- 视图
- 约束
- 存储过程
- 存储函数
- 触发器(做主动数据库的)
- 游标
- 用户
- 权限
- 事务
MYSQL常用命令:
2. DDL(数据模式定义语言):
CREATE
ALTER
DROP
3. DML(数据操作语言):
INSERT
UPDATE
DELETE
4. DCL(数据控制语言):
GRANT
REVOKE
DDL
- 创建数据库
CREATE DATABASE db_name;
CREATE DATABASE IF NOT EXISTS db_name;
CREATE DATABASE mytest; - 删除数据库
DROP TABLE,是从数据库中删除表。删除后,表结构不在存在,无法再对该表进行任何操作。
DROP DATABASE db-name;
—->DROP DATABASE mytest2;
3. 创建表
CREATE TABLE db_name(col1,col2,…);
USE mytest;设置客户端默认使用的数据库;
(如果不是这样操作,就要CREATE TABLE mytext.students() ) Gender性别
CREATE TABLE students(Name CHAR(20)NOT NULL,Age TINYINT UNSIGNED,Gender CHAR(1) NOT NULL);
如果出现错误,第一检查语法是否有问题,第二:我在创建mytest这个数据库的时候,是用root,默认的用户和用户组不属于mysql,
所以应该把用户和用户组改为mysql; chown mysql:mysql /mytest;
+ 查看库中的表:
SHOW TABLES FROM DB_NAME;
—-> SHOW students;
+ 查看表的结构:
DESC TABLE tb_name;
DESC students;
help ALTER TABLE 可获取关于table的帮助;
+ 修改表:
ALTER TABLE tb_name;ALTER TABLE students;向右增加一列;
ALTER TABLE students ADD course VARCHAR(100);增加一行course的;
MODIFY; 修改内容;
CHANGE; ALTER TABLE students CHANGE course COURSE VARCHAR(100)AFTER Name 改变名称;
ADD;
DROP;
DML
- 语法
1 | INSERT INTO tb_name(col1,col2,...) VALUES|('STRING,NUM,....'); |
2. 创建用户
1 | CREATE USER 'USERNAME'@'HOST' IDENTIFIED BY 'PASSWORD'; |
- 删除用户
1 | DROP USER 'USERNAME'@'HOST'; |
- 完成如下操作
- 找出性别为女性的所有人;
SELECT * FROM tech WHERE Gender=’Female’;
- 找出年龄大于20的所有人;
SELECT * FROM tech WHERE Age>20;
- 修改Zhu Ziliu的Course为Kuihua Baodian;
UPDATE tech SET Course=’Kuihua Baodian’WHERE Name=’Zhu Ziliu’;
- 删除年龄小于等于19岁的所有人;
DELETE FROM tech WHERE Age <=19;
- 授权给testuser对testdb库有所有访问权限;
GRANT ALL PRIVILEGES ON testdb.* to testuser@’%’;
1 | mysql>USE mysql; |
root localhost *08E080RERFJA030030JFAFJ3IFADFA343424;
为用户设定密码:
1 | 1. mysql>SET PASSWORD FOR 'root'@'localhost'=PASSWORD('new-password'); |