开始学习mysql里的简单sql语句
数据库作用: 高效管理数据库的 一种服务器
变量:
数组:
集合:
大超市: 生活用品 , 食品 , .....
1.关系型数据库: 是通过 二维表 结果 来存储数据 , 行 , 列
文件
DB2 , Oracle , mysql , SQLServer 2005(院校)(部署在windows) ,Sybase
Oralce:政府,国家
mysql:中小型企业 , mysql
mysql是 开源 关系型数据库 : RDBMS (Relational Database Management System)
使用 SQL(结构化查询语言 Structure Query Lanauage)语言 来对数据进行管理
mysql最早是 属于瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。
1.DBMS: Database Management System 数据库管理系统
2.DB: Database
3.SQL: Structure Query Lanauage 结构化查询语言
SQL的划分:
1. DDL: 数据库定义语言 Database Definition Language
1.create database 数据库的名字 创建数据库
2.drop database 数据库名 删除数据库
3.数据库是用来 存储表, 表是用来有效划分,和高效管理数据的
table 表 column 字段 , record 记录
create table xxx(
字段名1 数据类型(长度), int类型 不需要设置 默认 11
字段名2 数据类型(长度), varchar 类型必须设置长度
)
修改表结构:
1)alter table student add [column] address varchar(22);
2)alter table student drop [column] gender;
3)alter table student modify [columm] stuName varchar(50); 修改类型
4)alter table student change [column] stuName studentName varchar(22); 修改字段名
5)alter table student rename to 新表名;
*** 数据库名, sql 语句没有
删除表:
drop table 表名;
表复制:
1.复制表结构: create table tb_person as select * from person where 1=2;
2.复制整个表: create table tb_person as select * from person;
学习一些常用命令:
mysql登录:
1.mysql -uroot -p
Enterpassword: ****
2.mysql -h 192.168.200.128 -P 3306 -uroot -proot
3.show databases; 显示当前DBMS中的所有数据库
|-- test 数据库 空的 给你用的
|-- mysql 数据库 自定义用户要去 user 表去查
4. use 数据库名; 必须写use --- > Database changed
5.show tables; 显示当前数据库下的所有表
6.desc 表名; 显示表结构
2. DML: 数据库操纵语言 Database Manipulate Language
必须出现在 DDL之后
1)添加数据:
insert into 表名(字段列表) values(值列表);
mysql不区分大小写
insert into person(pid,pname,age) values(1,'张三',23);
insert into person(pname,age,pid) values('李四',21,2);
insert into person(pname,age) values('王五',22); 前提是允许为null
insert into person values(4,'关羽',22);
批量插入:
insert into person(pid,pname,age)
values(5,'张三',23),
(6,'haha',22),
(7,'xixi',11);
2)修改操作: 表中数据
update 表名 set 字段名 = 值,字段名 = 值 where id = 3;
3)删除操作:
delete from 表名 where id = 1;删除指定条数
delete form 表名; 全部删除
delete from 表名 where id in(3,4,6);
工作中 都是 逻辑删除 ,物理删除
status
0 , 1
要把 lisa 删除掉
update person set status = 1 where id = 3;
约束: 6个 但是 5个就够用 ------> 在使用DDL语言的时候
1.主键 : 唯一标识 (一个字段来 标识这个是唯一的记录)
唯一标识当前这条记录, 唯一的
如何创建一个主键: 默认就是 非空约束
1. 在创建表的时候 直接 定义主键了
create table `user`(
uid int primary key auto_increment,
uname varchar(22) not null);
create table `user`(
uid int(22),
uname varchar(22) not null,
primary key(uid));
手动赋值, 自动增长
*** insert into teacher(tid, tname) values(null,'张三');
insert into teacher(tid, tname) values(23,'王五');
insert into teacher(tname) values("赵柳"); 必须是主键自增
2.如果你的表结构已经定义完了,那怎么办 我想加主键
alter table person modify column pid int primary key
auto_increment;
删除主键:
去掉主键自增的状态
alter table person modify column pid int;
删除主键:
alter table person drop primary key;
|-- 复合主键
我可以不用id 这样的字段来做主键, mysql 支持多个字段当做主键
不建议使用; 会影响查询性能; 400万
create table person(
pid int,
pname varchar(22),
age int,
primary key(pname,age));
---------------------------------------------------------------------
2.外键 :多表
外键存在与 两个表之间,这样体现出多表
foreign key
1.定义表结构时创建外键:
3.非空约束: not null
uname varchar(22) not null
4.检查约束: check()
check(age>18 and age < 50) mysql不支持
5.唯一约束: unique
idCard varchar(22) unique
6.默认约束 default
pname varchar(22) default '默认值'
3. DQL: 数据库查询语言 Database Query Language
4. DCL: 数据库控制语言 Database Control Lauguage
数据库高级部分:
1.函数
2.数据库的事务
3.....
100%
DDL , DML 5-10
90% DQL
中文乱码:my.ini文件
`user`
2.非关系型数据库: 效率高 key-value 内存中 --》 持久化 完成向文件的存储
redis ---> Linux
List list = new ArrayList();
list.add("");
list.add(3);
list.add(new Person());