MySql基础笔记-增删改查
一、数据库及其创建
1. 使用数据库的优势
- 数据存储在内存中,速度快,但是不能永久保存
- 数据存储在文件中,可以永久保存,但是操作查询步骤繁琐
- 数据库专门管理数据,具有:
- 查询迅速
- 永久保存数据
- 对数据的管理方便 这三个优点,缺点是,需要钱买。
数据自本质上是一个文件系统,还是以文件的方式存在服务器的电脑上的。
数据库管理系统下有多个数据库,每个数据库有多张表,每个表中又记录了很多数据。
2.SQL
SQL指的是结构化查询语言,是一种所有关系型数据库的查询规范,不同的数据库都支持。通用的数据库操作语言,可以用在不同的数据库中。 不同的数据库SQL 语句有一些区别。例如MySql就有一些自己特有的语句。
MySQL的语法:
- 每条语句以分号结尾,在命令行操作里面必须加,在SQLyog不是必须
- 不区分大小写
- 有三种注释方式
- –空格 单行注释
- /**/ 多行注释
- Mysql特有注释方式:#内容
MYSQL服务的启动和登录
** MYSQL服务的启动**
- 命令行中 输入 net start mysql 关闭: net stop mysql
- 我的电脑 ——>管理——>服务和应用程序——>Mysql——>右键启动与停止
MySQL的登录方式
用命令行:
- mysql -u账户名 -p账户名(不加分号!)如: mysql -uroot -proot
- mysql -h ip 地址 -u用户名 -p密码 如:mysql -h127.0.0.1 -uroot -proot
- mysql --host=ip地址 --user=用户名 --password=密码 如: mysql --host=127.0.0.1 --user=root --passowrd=root
第二种方式是用SQL客户端登录
2. 数据库的创建
--创建db,db2数据库
create database db;
create database db2;
--更改默认的字符集
alter database db default character set utf8;
--查看数据库的创建语句
SHOW CREATE DATABASE db;
--删除数据库
drop database db2;
--查看目前正在使用的数据库
select database();
--切换数据库从db切换到db3
use db3;
二、表的创建及其增删改查
1. 表的创建DDL语句
DCL:Data Construed Language (数据定义语句,上述的建库也属于此类语言)
create table 表名()
create table 表名(
列名1 类型,
列名2 类型,
.....
列名n 类型 -- 最后一个列不用加
);
______________________________
如创建一个学生表:
create table student(
name varchar(20),
age int,
birthday date
);
- 如果已经存在一个表,想要再创一张可以采用
create table 新表名 like 旧表名
的方式,
如:create table student2 like student;
2. DML
Data Manipulation Language(DML 数据操纵语言)
MySql中的逻辑符号中
一、表的结构修改
-- 向学生表中增加一个性别列,类型为长度为20的字符串 alter table 表明 add 列名 类型;
alter table student add gender varchar(20);
-- 改变表中某列的名字和类型 alter table 表名 change 旧列名 新列名 类型;
alter table students change birthday shengri date;
-- 改变表的字符集 alter table 表名 character set 字符集;
ALTER TABLE students CHARACTER SET utf8;
-- 改变某列的类型,alter table 表名 modify 列名 新类型,(由长度为20的字符串改为长度为25的字符串)
alter table students modify name varchar(25);
-- 改变表名 rename table 旧表名 to 新表名
rename table student to students;
二、表中数据增减改
-- 表中插入数据(插入全部,可以不用列出插入的列名,但是数据的顺序必须和列名数据对应)
insert into students values('hanhan',18,'2020-1-1','man');
-- 也可以一次性插入多个,数据中间用逗号隔开
insert into students values('hanhan',18,'2020-1-1','man'),('nnn',19,'2020-1-1','man');
-- 插入对应的数据,该行没有输入的数据默认为NULL值
INSERT INTO students (NAME,age) VALUE('dasdsa',36);
-- 数据的更新:将表中年龄为36的学生的名字改为“新名字” update 表名 set 列名 = 值 where条件表达式;
update students set name = '新名字' where age = 36;
-- 带条件删除 delete from 表名 where 条件表达式;
delete from students where age = 36;
三、表的删除
-- 直接删除表
drop table ssss;
-- 删除表中所有内容的两种方式:
-- 删除表,有多少行就删除多少次,效率低
delete from 表名;
-- 删除表,一次性删除,效率较高(相当于一次性删除表,然后再创建一张一样的表);
truncate 表名;
3. DQL
MySql条件判断的逻辑符号和Java相比有几个比较特别:
比较运算符 | 含义 |
---|---|
>= ,<= , != , <> , = , > , < | 具有大于等于和小于等于,没有==符号,<> 和 !=都表示不等于 |
Between…and… | 在…与…之间,如between 100 and 600 |
In | 判断是否在某集合中,如 IN (100,200,300) |
Like, %, _ | Like用于模糊查询,意为像…的 |
IS NULL | 判断某列是不是空值 |
比较运算符 | 含义 |
and 或 && | 逻辑与 |
or 或 || | 逻辑或 |
not 或 ! | 逻辑非 |
表中的查询
-- 无条件查询所有数据 select * from 表名
select * from students;
-- 带条件查询 select * from student where条件表达式(*表示所有,查询所有内容)
-- 查询所有年龄大于10的学生的所有信息
select * from students where age>10;
-- 查询所有生日在这两天之间的学生的所有信息
select * from students where birthday between '1997-12-01' and '1998-05-06';
-- 查询姓黄,且名字是三个字的人,一个 _ 代表了一个字符。
select * from students where name like "黄__"
-- 查询名字是三个字的人,且中间一个是黄的人
select * from students where name like "_黄_"
-- 查询名字中含黄的人,不限长度,%代表任何字符(长度不限),也可以是没有字符;
select * from students where name like "%黄%"
-- 查询年龄大于10且姓名三个字,姓为相的学生的生日信息;
select birthday from students where age >10 and name like "相__";
-- 查询指定列别名 select 列名 as 列别名 from 表 where条件表达式(as可以省略)
select * as all from students where age >18;
-- 查询结果参与运算 select 列名+运算符 列别名 from 表明 where条件表达式
select age+1 newage from students ; -- 查询所有学生的姓名并将结果+1的值作为新列名,如果不给别名,新的列名就是age+1
--剔除重复的结果 select distinct * from 表名;
select distincet age from students;
--