Java基础学习之数据库MySQL简单操作

数据库

数据库的含义

 数据库:(保存数据 保存到一个文件中 ;对数据进行持久化)

  使用简单的命令就可以增删改查 

  数据库系统:

  按特定的规则可以操作数据库的应用程序;

简单的常用数据库

MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。

Oracle :收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。

DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。

SQLite : 嵌入式的小型数据库,应用在手机端。

redis   :  以key-value存储数据的 保存内存中

数据在库中的表现形式

列(column):字段

行(row):一条记录(实体)


安装MySQL

1.保存安装中的 数据库初始密码;
2.直接安装进入mql修改密码;
3.cd /usr/local/mysql/bin/ 进入文件夹
4.sudo su   获取系统权限(输入电脑密码)
5./mysqld_safe --skip-grant-tables &   (直接进入mql)
./mysql
FLUSH PRIVILEGES;  (重新加载权限表)
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');  (修改密码)
quit; (退出mql)
exit; (关闭)
6.修改环境变量配置文件
touch ~/.bash_profile   (创建文件)
open -t ~/.bash_profile (打开文件)
export PATH=${PATH}:/usr/local/mysql/bin/  
(记得保存 保存关闭后 关闭终端)

修改默认字符集
添加配置文件 my.cnf(记得重启服务)

数据库基本操作

DDL 数据定义语言  ,用来定义数据库对象: 库 表 列等  CREATE(创建) ALTER(修改) DROP(删除)

DML 数据操作语言  ,用来定义数据库 记录(数据)     INSERT UPDATE DELETE 

DCL 数据控制语言  ,

DQL 数据查询语言  ,  !!SELECT (选择)

   

注意: SQL语句不分大小写 以分号(;)结束

1.创建数据库

create database mydb1;
查看一下创建的数据(默认字符集UTF8)
show create database mydb1;
指定数据库字符集
Create database mydb2 character set gbk;
查看数据库支持的字符集
show character set;
设置对应的校验规则
Create database mydb3 character set gbk COLLATE gbk_chinese_ci;

2.查询数据库

查看当前数据库服务器中的所有数据库
show databases;
查看前面创建的mydb2数据库的定义信息
Show  create  database mydb2;

3.修改数据库(alter 更改)

修改字符集为utf8
alter database mydb2 character set utf8;

4.删除数据库

删除前面创建的mydb3数据库
Drop database mydb3;

5.其他:

查看当前使用的数据库
select database();
切换数据库
use mydb2;

6.退出数据库

quit;

操作数据库中的数据表

1.创建数据表

* 语法:
create table 表名(
		字段1 字段类型,
		字段2 字段类型,
		...
		字段n 字段类型
		);
1.创建表
mysql> create table emp(
    -> id int,
    -> name varchar(50),
    -> gender varchar(10),
    -> birthday date,
    -> Entry_date date,
    -> job varchar(100),
    -> Salary double,
    -> resume text
    -> );

2.常用数据类型:

int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型; char(10)  'abc       '
varchar:可变长度字符串类型;varchar(10) 'abc' (也是存10个字符但是会自动去除空格 常用但效率比char低)
text:字符串类型; 大数据文本 最大4M(大文件直接弄个文件上传)
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss  会自动赋值(当前系统时间)  可以直接插入null
'2018-06-11' 不想使用默认系统时间 可以直接用字符串插入
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

3.修改表

添加一列 image blob(字节类型)
ALTER TABLE emp ADD image blob;
修改job列,使其长度为60
ALTER TABLE emp MODIFY job varchar(60);
删除image列,一次只能删一列
ALTER TABLE emp DROP image;
表名改为user
RENAME TABLE emp TO user;
查看表格的创建细节
SHOW CREATE TABLE user;
列名name修改为username
ALTER TABLE user CHANGE name username varchar(100);

DML操作(操作表数据)

1.insert(插入)

语法: INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);
注意:列名与列值的类型、个数、顺序要一一对应。
可以把列名当做java中的形参,把列值当做实参。
值不要超出列定义的长度。
如果插入空值,请使用null
插入的日期和字符一样,都使用引号括起来。
INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume)
VALUES(2,'lisi','male','1995-5-10',10000,'2015-5-5','good boy');

INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume)
VALUES(3,'wangwu','male','1995-5-10',10000,'2015-5-5','good boy');

批量插入:
INSERT INTO emp VALUES
(4,'zs','m','2015-09-01',10000,'2015-09-01',NULL),
(5,'li','m','2015-09-01',10000,'2015-09-01',NULL),
(6,'ww','m','2015-09-01',10000,'2015-09-01',NULL);

2.修改操作(update)

语法:UPDATE 表名 SET 列名1=列值1,列名2=列值2 。。。 WHERE 列名=值

 
 
mysql> update user set Salary=5000;
Query OK, 5 rows affected (0.10 sec)
Rows matched: 5  Changed: 5  Warnings: 0

mysql> update user set Salary=3000 where username='大海';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update user set Salary=4000,gender='f' where username='rui';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update user set Salary=Salary+1000 where username='dahai';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from user;
+------+----------+--------+------------+------------+----------+--------+--------+
| Id   | username | gender | birthday   | Entry_date | job      | Salary | resume |
+------+----------+--------+------------+------------+----------+--------+--------+
|    1 | dahai    | 男     | 2018-06-11 | NULL       | jiangshi |   6000 | NULL   |
|    1 | rui      | f      | 2008-06-11 | NULL       | jiangshi |   4000 | NULL   |
|    1 | 大海     | nv     | 2008-08-08 | NULL       | 厨子     |   3000 | NULL   |
|    2 | 小海     | nv     | 2008-08-18 | NULL       | 厨子     |   5000 | NULL   |
|    3 | 中海     | nv     | 2008-08-28 | NULL       | 厨子     |   5000 | NULL   |
+------+----------+--------+------------+------------+----------+--------+--------+
5 rows in set (0.00 sec)

将所有员工薪水修改为5000元。UPDATE emp SET salary=5000 将姓名为’王龙’的员工薪水修改为3000元。UPDATE emp SET salary=3000 WHERE name=’ 王龙’;将姓名为’zs’的员工薪水修改为4000元,gender改为f。UPDATE emp SET salary=4000,gender='f' WHERE name='zs';将wu的薪水在原有基础上增加1000元。UPDATE emp SET salary=salary+1000 WHERE gender='male';

3.删除操作(Delete)

语法 : DELETE FROM 表名 WHERE name='大海'

删除表中名称为’zs’的记录。
DELETE FROM emp WHERE name=‘zs’;
删除表中所有记录。
DELETE FROM emp;
使用truncate删除表中记录。
TRUNCATE TABLE emp;
mysql> delete from user where username='小海';
Query OK, 1 row affected (0.04 sec)

mysql> select * from user;
+------+----------+--------+------------+------------+----------+--------+--------+
| Id   | username | gender | birthday   | Entry_date | job      | Salary | resume |
+------+----------+--------+------------+------------+----------+--------+--------+
|    1 | dahai    | 男     | 2018-06-11 | NULL       | jiangshi |   6000 | NULL   |
|    1 | rui      | f      | 2008-06-11 | NULL       | jiangshi |   4000 | NULL   |
|    1 | 大海     | nv     | 2008-08-08 | NULL       | 厨子     |   3000 | NULL   |
|    3 | 中海     | nv     | 2008-08-28 | NULL       | 厨子     |   5000 | NULL   |
+------+----------+--------+------------+------------+----------+--------+--------+
4 rows in set (0.00 sec)

mysql> delete from user;
Query OK, 4 rows affected (0.03 sec)

mysql> select*from user;
Empty set (0.00 sec)

mysql> show create table user;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                             |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user  | CREATE TABLE `user` (
  `Id` int(11) DEFAULT NULL,
  `username` varchar(100) DEFAULT NULL,
  `gender` varchar(10) DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  `Entry_date` date DEFAULT NULL,
  `job` varchar(60) DEFAULT NULL,
  `Salary` double DEFAULT NULL,
  `resume` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

DELETE 删除表中的数据(一条一条删),表结构还在;删除后的数据可以找回 

TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。

删除的数据不能找回。执行速度比DELETE快。




猜你喜欢

转载自blog.csdn.net/vlin_fan/article/details/80657479