1.在窗口登录mysql后,可执行 show databases可展示所有库
use 数据库名(使用数据库)
show table;(显示表)
describe 表名(显示表)
create database 库名;
exit(退出)
2.操作数据库
creat database 【if not exists】 名字(创建数据库)
drop database 名字(删除数据库)
use 数据库名(使用数据库)
show database 名字(查看库)
3.创建表
CREATE TABLE IF NOT EXISTS `student`( `id` INT(4) NOT NULL AUTO_INCREMENT(自增1) COMMENT(注释) '学号', `pwd` VARCHAR(20) NOT NULL DEFAULT(默认值) '123456' COMMENT '密码' PRIMARY KEY('id')(设置主键) )ENGINE=INNODB(引擎) DEFAULT CHARSET=utf8(默认字符编码)
SHOW CREATE TABLE student(查看创建表的代码) DESC student(查看表的结构)
ALTER TABLE teacher RENAME AS teacher1(修改表名) ALTER TABLE teacher1 ADD age INT(11)(增加属性) ALTER TABLE teacher1 MODIFY age VARCHAR(11)(修改约束) ALTER TABLE teacher1 CHANGE age age1 INT(11)(属性重命名) ALTER TABLE teacher1 DROP age1(删除字段)
4.添加数据
INSERT INTO `student` (`id`,`pwd`) VALUES ('002','bbb'),('003','ccc')(添加数据)
5.修改数据
UPDATE `student` SET `pwd`='abc',sex='男' WHERE id=1(修改数据)
6.删除数据
DELETE FROM
teacher1
WHERE id=1【删除数据】
TRUNCATE 'teacher1' 【更深的删除】
7.查询
select '字段' as 别名 from 表名 select concat('姓名',name) as 别名 from 表名 select distinct 'num' from result【去除重复数据】
8.模糊查询
利用like
select 'id' from 表名
where name like '陈%'【以陈开头】
select 'id' from 表名
where name like '陈_'【以陈开头,后面只有一位】
select 'name' from 'student'
where id in ('范围')
9.联表查询
select s.studentnum,name,num from student as s【别名】 inner join result as r【另一个表的别名,相同的部分】 on s.studentnum=r.studentnum
10排序
select '字段' as 别名 from 表名 order by id asc【升序】 desc【降序】
11.分页
select '字段' as 别名 from 表名 order by id asc【升序】 desc【降序】 limit 10,5【起始为10,大小是5】
12.嵌套
select id,name from Student where id=( select id from result )
13.常用函数
select abs(-8) 【绝对值】
select ceiling(数) 【向上取整】
select floor(数) 【向下取整】
select rand() 【返回一个0到1的随机数】
select sign(数) 【负数返回-1,正数返回1,0返回0】
select char_length('字符串')
select insert('字符串',起始,大小,内容)
select lower('字符串') 【小写字母】
select upper('字符串') 【大写字母】
select instr('字符串','a') 【返回出现a的位置】
select replace('字符串','出现的字符','新的字符')
select substr('字符串',起始,大小)
SELECT NOW() 【时间】
SELECT YEAR(NOW()) 【年】
SELECT MD5('eee') 【md5是用来加密的】
14.聚合函数
SELECT COUNT(id) FROM student 【计数,忽略NULL】
SELECT COUNT(1) FROM student 【计数,不忽略NULL】
SELECT COUNT(*) FROM student 【计数,不忽略NULL】
15.事务四个特性
1.原子性:要么全部执行,要么全部不执行
2.一致性:数据完整性保持稳定
3.隔离性:隔离
4.持久性:永久性
16.事务
set autocommit=0 【关闭自动提交】 start transaction 【事务开启】 内容 commit 【提交:持久化】 rollback 【回滚】 set autocommit=1 【开启自动提交】 savepoint 【设置保持点】
SET autocommit=0; 【关闭自动提交】 START TRANSACTION 【开启事务】 UPDATE ACCOUNT SET money=money-500 WHERE `name`='A' UPDATE ACCOUNT SET money=money-500 WHERE `name`='B' COMMIT; 【提交】 ROLLBACK; 【回滚】 SET autocommit=1; 【开启自动提交】
17.索引
create index 索引名 on 表(字段) 【创建索引,可以加快搜索】
18.创建用户
create user 名字 identified by '密码'
set password =password('密码') 【修改当前用户密码】 set password for 用户=password('密码') 【修改指定用户密码】 rename user 旧名字 to 新名字 grant all privileges on 库.表 to 用户名 【给用户权限】
19.备份
利用cmd,导出文件
mysqldump -hlocalhost -uroot -p123456 school student >D:/a.sql
利用cmd,导入文件
先登录 source d:/a.sql
20.三大范式
第一范式:每一列不可在分
第二范式:每张表只描述一件事
第三范式:必须与主键直接相关
21.JDBC使用
package com01; import java.sql.*; public class jdbcTest { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1.加载驱动 Class.forName("com.mysql.jdbc.Driver"); //2.用户信息和url String url="jdbc:mysql://localhost:3306/school? useUnicode=true&characterEncoding=utf8&useSSL=false"; String username="root"; String password="123456"; //3.连接 connection就是数据库对象 Connection connection = DriverManager.getConnection(url, username, password); //4.执行SQL对象 statement是执行SQL对象 Statement statement = connection.createStatement(); //5.执行SQL String sql="SELECT * FROM student"; ResultSet resultSet = statement.executeQuery(sql);//返回结果集 while(resultSet.next()) { System.out.println("id="+resultSet.getObject("id")); System.out.println("pwd="+resultSet.getObject("pwd")); System.out.println("=========="); } //6.释放连接 resultSet.close(); statement.close(); connection.close(); } }