1. 登录
>mysql -uroot -p123456 密码登录MySQL
2.查看当前有哪些数据库》
mysql>show databases;
3.登录
mysql -hlocalhost -P3306 -uroot -p123456
主机名 端口 用户名 密码
4. 退出 \q
5. 显示所有数据库:show databases;
选定数据库: use dbname;
显示当前数据库所有表:show tables;
一个数据库包含多个表,一个表包含多个记录;
显示指定数据库中的所有表:show tables from dbname;
information_schema是用来管理元数据的
放弃正在输入的命令:\c
显示命令清单:\h
退出mysql程序:\q
查看MySQL服务器状态信息:\s;
mysql是数据库管理系统:
建立数据库,操作数据,维护数据;
如果管理,用结构化查询语言;
客户端输入SQL,传递给服务器端;
6.创建数据库:
>create database 名称;
存储的数据部分:在mysql中每一个数据库对应一个data;
存储在位置:C:programData/mysql/data, 隐藏文件夹;
里面文件不能修改,
早期是文件:
alter database dbname character set gbk; 修改数据库字符;
显示创建的数据库:
show create database study;
alter database dbname character set utf8; 修改数据库字符;
显示创建的数据库:
show create database study;
创建中文数据库:create database 学习;
show databases;
修改密码:mysqladmin -u root -poldpass password newpassword
mysqladmin -uabc -p123456 password 123
查找数据库的用户;
>select user from mysql.user;
7. 创建用户和密码—单引号
create user username identified by '123456'
修改数据库的
alter database dbname character set gbk
删除数据库
Drop database `学习·;
8.创建一个数据库表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
CREATE TABLE a1(name VARCHAR(20), sex CHAR(1));
显示表的结构
mysql> DESCRIBE MYTABLE;
>DESCRIBE a1;
往表中加入记录
mysql> insert into MYTABLE values (”hyq”,”M”);
用文本方式将数据装入数据库表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;
导入.sql文件命令(D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
删除表
mysql>drop TABLE MYTABLE;
清空表
mysql>delete from MYTABLE;
use study;
Delete from a1;
更新表中数据
mysql>update MYTABLE set sex=”f” where name=’hyq’;
9.select语句
SELECT <列名>
FROM <表名>
[WHERE <查询条件表达式>]
[ORDER BY <排序的列名>
数据查询-条件(and,or)
SELECT * FROM emp WHERE deptno=30 and sal>1500;
SELECT * FROM emp WHERE job='MANAGER' or job='SALESMAN'
数据查询-空值
SELECT empno, ename, sal, comm FROM emp WHERE comm is null
数据查询-in
SELECT * FROM emp where ename in ('SMITH', 'KING');
模糊查询-like
查询时,字段中的内容并不一定与查询内容完全匹配,只要字段中含有这些内容
通配符: ‘%’ (0个多个字符)
通配符: ‘_’ (单个字符
SELECT * FROM emp where ename like 'S%';
SELECT * FROM emp where ename like 'S_ITH';
数据查询-排序
ORDER BY升序
ORDER BY desc降序
按单列名排序SELECT empno, ename, job FROM emp ORDER BY 2 desc;
按多个列名排序SELECT * FROM emp ORDER BY job asc, sal desc;
limi限制多少行
select * from emp ORDER BY sal limit 5;
distinct去除重复记录
select distinct job,deptno from emp;
UNION (无重复并集):当执行UNION 时,自动去掉结果集中的重复行,并以第一列的结果进行
升序排序。
select empno,ename,job from emp where job='SALESMAN'
union
select empno,ename,job from emp where job='MANAGER';
UNION ALL (有重复并集):不去掉重复行,并且不对结果集进行排序。
select job, sal from emp where empno=7902
union
select job, sal from emp where empno=7788;
10.目标
交叉连接
交叉连接是不带WHERE 子句的多表查询,它返回被连接的两个表所有数据行的笛卡尔积(15*4)。
返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查
询条件的数据行数。
select * from emp,dept
内连接(等值连接)
等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接
表中的所有列,包括其中的重复列
select * from emp,dept where emp.deptno=dept.deptno;
内连接(不等连接)
不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些
运算符包括>、>=、<=、<、!>、!<和<>
select * from emp,dept where emp.deptno > dept.deptno;
外连接(左连接)
返回包括左表中的所有记录和右表中联结字段相等的记录;即左外连接就是在等值连接的基础上
加上主表中的未匹配数据
select * from emp left [outer] join dept on emp.deptno=dept.deptno
外连接(右连接)
返回包括右表中的所有记录和左表中联结字段相等的记录;即右外连接是在等值连接的基础上加
上被连接表的不匹配数据
select * from emp right [outer] join dept on emp.deptno=dept.deptno
11.子查询
子查询即一个查询语句嵌到另一个查询语句的子句中;可以出现在另一个查询的列中,where子句
中,from子句中等。
查询员工及其领导名称
select ename 员工,(select ename from emp where empno=e.mgr) 领导 from emp e;
0
列出所有“CLERK”(办事员)的姓名及其部门名称。
select ename,dname from emp,dept where job='CLERK' and emp.deptno=dept.deptno;
any/all
<any,小于子查询中的某个值。等价于<max
>any,大于子查询中的某个值。等价于>min
>all,大于子查询中的所有值。等价于>max
<all,小于子查询中的所有值。等价于<min
查询薪金小于销售员某个员工的员工信息
select * from emp where sal
< any (select sal from emp where job='SALESMAN')
查询薪金大于所有销售员的员工信息
select * from emp where sal
> all (select sal from emp where job='SALESMAN')
exists
exists 存在性条件判断
若内层查询非空,则外层的where子
句返回真值,否则返回假。not exists
相反。
列出与“SCOTT”从事相同工作的所有员工。
select * from emp e where exists
(select * from emp where ename='SCOTT' and e.job=job);
12.聚合函数
聚合函数一般用于统计,常用如下:
count(field) //记录数
avg(field) //平均值
min(field) //最小值
max(field) //最大值
sum(field) //总和
count()使用
select count(comm) as 记录数 from emp;
select count(*) as 记录数 from emp;
select count(0) as 记录数 from emp;
其它聚合函数
select avg(sal) as 平均薪金 from emp;
select max(sal) as 最高薪金 from emp;
select min(sal) as 最低薪金 from emp;
select sum(sal) as 薪金总和 from emp;
group by/having
select 分组字段或聚合函数
from 表
group by 分组字段 having 条件
order by 字段
select deptno,count(*) from emp group by deptno;
13.工程配置
mysql_init
MYSQL结构代表一个连接句柄
MYSQL *mysql_init(MYSQL *mysql) ;
如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。
如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。
mysql_real_connect
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user,
const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
my_bool reconnect = true;
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk");
mysql_query
int mysql_query(MYSQL *mysql, const char *query)
mysql_affected_rows
mysql_store_result
mysql_num_fields
mysql_num_rows
mysql_fetch_field
mysql_fetch_row
mysql_free_result
>mysql -uroot -p123456 密码登录MySQL
2.查看当前有哪些数据库》
mysql>show databases;
3.登录
mysql -hlocalhost -P3306 -uroot -p123456
主机名 端口 用户名 密码
4. 退出 \q
5. 显示所有数据库:show databases;
选定数据库: use dbname;
显示当前数据库所有表:show tables;
一个数据库包含多个表,一个表包含多个记录;
显示指定数据库中的所有表:show tables from dbname;
information_schema是用来管理元数据的
放弃正在输入的命令:\c
显示命令清单:\h
退出mysql程序:\q
查看MySQL服务器状态信息:\s;
mysql是数据库管理系统:
建立数据库,操作数据,维护数据;
如果管理,用结构化查询语言;
客户端输入SQL,传递给服务器端;
6.创建数据库:
>create database 名称;
存储的数据部分:在mysql中每一个数据库对应一个data;
存储在位置:C:programData/mysql/data, 隐藏文件夹;
里面文件不能修改,
早期是文件:
alter database dbname character set gbk; 修改数据库字符;
显示创建的数据库:
show create database study;
alter database dbname character set utf8; 修改数据库字符;
显示创建的数据库:
show create database study;
创建中文数据库:create database 学习;
show databases;
修改密码:mysqladmin -u root -poldpass password newpassword
mysqladmin -uabc -p123456 password 123
查找数据库的用户;
>select user from mysql.user;
7. 创建用户和密码—单引号
create user username identified by '123456'
修改数据库的
alter database dbname character set gbk
删除数据库
Drop database `学习·;
8.创建一个数据库表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
CREATE TABLE a1(name VARCHAR(20), sex CHAR(1));
显示表的结构
mysql> DESCRIBE MYTABLE;
>DESCRIBE a1;
往表中加入记录
mysql> insert into MYTABLE values (”hyq”,”M”);
用文本方式将数据装入数据库表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;
导入.sql文件命令(D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
删除表
mysql>drop TABLE MYTABLE;
清空表
mysql>delete from MYTABLE;
use study;
Delete from a1;
更新表中数据
mysql>update MYTABLE set sex=”f” where name=’hyq’;
9.select语句
SELECT <列名>
FROM <表名>
[WHERE <查询条件表达式>]
[ORDER BY <排序的列名>
数据查询-条件(and,or)
SELECT * FROM emp WHERE deptno=30 and sal>1500;
SELECT * FROM emp WHERE job='MANAGER' or job='SALESMAN'
数据查询-空值
SELECT empno, ename, sal, comm FROM emp WHERE comm is null
数据查询-in
SELECT * FROM emp where ename in ('SMITH', 'KING');
模糊查询-like
查询时,字段中的内容并不一定与查询内容完全匹配,只要字段中含有这些内容
通配符: ‘%’ (0个多个字符)
通配符: ‘_’ (单个字符
SELECT * FROM emp where ename like 'S%';
SELECT * FROM emp where ename like 'S_ITH';
数据查询-排序
ORDER BY升序
ORDER BY desc降序
按单列名排序SELECT empno, ename, job FROM emp ORDER BY 2 desc;
按多个列名排序SELECT * FROM emp ORDER BY job asc, sal desc;
limi限制多少行
select * from emp ORDER BY sal limit 5;
distinct去除重复记录
select distinct job,deptno from emp;
UNION (无重复并集):当执行UNION 时,自动去掉结果集中的重复行,并以第一列的结果进行
升序排序。
select empno,ename,job from emp where job='SALESMAN'
union
select empno,ename,job from emp where job='MANAGER';
UNION ALL (有重复并集):不去掉重复行,并且不对结果集进行排序。
select job, sal from emp where empno=7902
union
select job, sal from emp where empno=7788;
10.目标
交叉连接
交叉连接是不带WHERE 子句的多表查询,它返回被连接的两个表所有数据行的笛卡尔积(15*4)。
返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查
询条件的数据行数。
select * from emp,dept
内连接(等值连接)
等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接
表中的所有列,包括其中的重复列
select * from emp,dept where emp.deptno=dept.deptno;
内连接(不等连接)
不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些
运算符包括>、>=、<=、<、!>、!<和<>
select * from emp,dept where emp.deptno > dept.deptno;
外连接(左连接)
返回包括左表中的所有记录和右表中联结字段相等的记录;即左外连接就是在等值连接的基础上
加上主表中的未匹配数据
select * from emp left [outer] join dept on emp.deptno=dept.deptno
外连接(右连接)
返回包括右表中的所有记录和左表中联结字段相等的记录;即右外连接是在等值连接的基础上加
上被连接表的不匹配数据
select * from emp right [outer] join dept on emp.deptno=dept.deptno
11.子查询
子查询即一个查询语句嵌到另一个查询语句的子句中;可以出现在另一个查询的列中,where子句
中,from子句中等。
查询员工及其领导名称
select ename 员工,(select ename from emp where empno=e.mgr) 领导 from emp e;
0
列出所有“CLERK”(办事员)的姓名及其部门名称。
select ename,dname from emp,dept where job='CLERK' and emp.deptno=dept.deptno;
any/all
<any,小于子查询中的某个值。等价于<max
>any,大于子查询中的某个值。等价于>min
>all,大于子查询中的所有值。等价于>max
<all,小于子查询中的所有值。等价于<min
查询薪金小于销售员某个员工的员工信息
select * from emp where sal
< any (select sal from emp where job='SALESMAN')
查询薪金大于所有销售员的员工信息
select * from emp where sal
> all (select sal from emp where job='SALESMAN')
exists
exists 存在性条件判断
若内层查询非空,则外层的where子
句返回真值,否则返回假。not exists
相反。
列出与“SCOTT”从事相同工作的所有员工。
select * from emp e where exists
(select * from emp where ename='SCOTT' and e.job=job);
12.聚合函数
聚合函数一般用于统计,常用如下:
count(field) //记录数
avg(field) //平均值
min(field) //最小值
max(field) //最大值
sum(field) //总和
count()使用
select count(comm) as 记录数 from emp;
select count(*) as 记录数 from emp;
select count(0) as 记录数 from emp;
其它聚合函数
select avg(sal) as 平均薪金 from emp;
select max(sal) as 最高薪金 from emp;
select min(sal) as 最低薪金 from emp;
select sum(sal) as 薪金总和 from emp;
group by/having
select 分组字段或聚合函数
from 表
group by 分组字段 having 条件
order by 字段
select deptno,count(*) from emp group by deptno;
13.工程配置
mysql_init
MYSQL结构代表一个连接句柄
MYSQL *mysql_init(MYSQL *mysql) ;
如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。
如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。
mysql_real_connect
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user,
const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
my_bool reconnect = true;
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk");
mysql_query
int mysql_query(MYSQL *mysql, const char *query)
mysql_affected_rows
mysql_store_result
mysql_num_fields
mysql_num_rows
mysql_fetch_field
mysql_fetch_row
mysql_free_result