数据库与表的增删改查

掌握三大数据库: mysql redis mongoDb。

mysql:基于内存的常用的数据库。
redis:适用于分布式,爬虫。
mongoDb:文档存储,基于磁盘。

mysql特点:严谨、高效,安全

书写规范:

字段等小写
sercode语句大写

表的操作(crud)

c创建
u更新
r读信息
d删除

开启数据库

sudo service mysql start    开启
(mysql-sever 服务端    mysql-client 客户端)
mysql -u root -p       -p密码,输入密码  exit退出。
sudo service mysql stop   停止
sudo service mysql restart

允许远程连接

1.找到mysql配置文件并做如下修改:允许远程连接

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

将 bind-address=127.0.0.1 注释掉

或则修改为bind-address= 0.0.0.0

首先登录系统

    mysql -h ip -u root -p

2.授权root用户

GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

.改.
%代表所以ip,填写固定ip11.11.111
ip查看 ifconfig

3.刷新权限

    FLUSH PRIVILEGES;

mysqld.cnf里面的密码:ZheDht1uoBqNJFd9
show databases;
use mysql
show tables;显示mysql里面表格
desc user;看结构
select user,host from user;查询语句

4.如果要修改,先使用默认账号登录然后输入一下命令:

update mysql.user set authentication_string=password('password') where user='root'and Host = 'localhost';

5.修改成功后重启便可以登录便可以使用账号密码登录
删除mysql

sudo apt-get autoremove --purge mysql-server-5.7 sudo apt-get remove mysql-server sudo apt-get autoremove mysql-server sudo apt-get remove mysql-common

清理数据 dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

创建数据库

1.CREATE DATABASE class1804;
SHOW DATABASES;

2.CREATE SCHEMA class18042;
SHOW DATABASES;

创建指定字符集的数据库

CREATE DATABASE bc DEFAULT charset=utf8;
CREATE SCHEMA bc1 DEFAULT charset=utf8;
SHOW DATABASES;
不存在就创建
CREATE DATABASE IF NOT EXISTS 数据库名称
ERROR 1007 (HY000): Can't create database 'bc1'; database exists
mysql>
创建重名 报错
CREATE SCHEMA IF NOT EXISTS bc1 DEFAULT charset=utf8;
不报错

查看当前所在数据库

select database();
结过:mysql

选择数据

use bc1
select database();
结果bc1

CREATE SCHEMA bc1 DEFAULT charset=utf8;
CREATE SCHEMA IF NOT EXISTS bc1 DEFAULT charset=utf8;

查看当前数据库编码格式

show variables like 'character_set_database';


CREATE DATABASE bc DEFAULT charset=utf8;
charset小写

DEFAULT默认
select user,host from user;

050 (42S01): Table 'customers' already exists

ALTER TABLE vendors ADD (vend_age INT NOT NULL DEFAULT 10,class VARCHAR(5) NOT NULL DEFAULT '1804');
插多字段

时间戳

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。 在实际应用上, 它可以使用在包括电子商务、 金融活动的各个方面, 尤其可以用来支撑公开密钥基础设施的 “不可否认” 服务。
转换秒10位。毫秒13位。

数据库引擎

服务器拿到信息以后让引擎执行。
默认存储引擎:InnoDb
show VARIABLES LIKE deefault_storage_engine;
显示默认支持的引擎。
SET default_storage_engine
设置默认引擎

MySQL表的操作

创建表

CREATE TABLE IF NOT EXISTS customers ( userid int NOT NULL AUTO_INCREMENT, name char(50) NOT NULL, address char(200) NOT NULL, email char(50) NOT NULL, PRIMARY KEY(userid) );

查看表

SHOW TABLES

查看表详细信息

SHOW CREATE TABLE table_name

查看表结构(DESCRIBE)

DESC 数据表名;

注意:
AUTO_INCREMENT自增
字符串就不用自增了

char(50)属于定长,不足50进位,达到50,浪费资源。
VARCHAR 不浪费资源 不定长

PRIMARY KEY(userid)
主键:确保数据的唯一性。书写时,每个数据独占一行,用,进行分开。
A表的主键在B表做外键。
A从表 B主表

更新表(ALTER TABLE)

添加新字段(列)

单个:
ALTER TABLE vendors ADD vend_gender INT NOT NULL DEFAULT 0;

多个:
ALTER TABLE ALTER TABLE vendors ADD (vend_age INT NOT NULL DEFAULT 10,class VARCHAR(5) NOT NULL DEFAULT '1804');

修改字段名(列)

ALTER TABLE 表名 CHANGE 字段名 新字段名 数据类型;

ALTER TABLE vendors CHANGE vend_age new int;
在不改变的情况下修改(类型,约束等)
ALTER TABLE vendors CHANGE modify 字段名(老的) 类型 约束 属性;

删除字段名(列)

ALTER TABLE vendors DROP old;

修改表名

ALTER TABLE oldtable RENAME AS newtable;

RENAME TABLE 数据表名1 To 数据表名2
RENAME TABLE vendors TO vendorss;

删除表

DROP TABLE [IF EXISTS] 数据表名;

复制表

CREATE TABLE [IF NOT EXISTS] 数据表名 LIKE 源数据表名;


除MySQL强制实施的规则外,应该坚持的几个普遍认可的最好习惯为:

不更新主键列中的值;
不重用主键列的值;
不在主键列中使用可能会更改的值。(例如,如果使用一个 名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)

书写规范:default默认值放 在限制之后。
表id要写数据类型 int。
int格式后面可以不写约束。

三大数据库字段类型:数字、字符串、日期

CREATE TABLE customers ( userid int NOT NULL AUTO_INCREMENT PRIMARY KEY, name char(50) NOT NULL, address char(200) NOT NULL, email char(50) NOT NULL);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容