主頁 >  其他 > 17期-什么是MySQL資料庫?看這一篇干貨文章就夠了!

17期-什么是MySQL資料庫?看這一篇干貨文章就夠了!

2020-09-19 04:25:07 其他

前言

為啥學習MySQL呢?因為MySQL是最流行的關系型資料庫管理系統之一,在web應用方面,MySQL是最好的軟體,MySQL所使用的sql語言是用于訪問資料庫的最常用標準化語言,

放心,讀這期內容的朋友們都適合:網站開發,軟體開發或者愛好者,

1.MySQL的入門

什么是資料庫呢?

  1. 資料庫,它是按照資料結構組織,存盤和管理資料的倉庫,
  2. 資料庫管理系統, 指資料庫系統中對資料進行管理的軟體系統,

讓我來整理一張思維導圖:

細節掌握:

  • 安裝配置,常用命令,操作資料庫;
  • 整型與浮點型,日期時間型與字符型;
  • 創建與查看資料庫表,修改資料庫表,洗掉資料庫表;
  • 非空約束,主鍵約束,唯一約束,默認約束,外鍵約束;
  • 管理工具:MySQL Workbench,SQLyog
  • 單表資料記錄的插入與自動編號,單表資料記錄的更新,單表資料記錄的洗掉,單表資料記錄的查詢,對查詢結果進行分組,對查詢結果進行排序,通過limit陳述句限制查詢記錄的數量;
  • mysql的運算子,數值函式,字符函式,日期時間函式,聚合函式,資訊函式與加密函式;
  • 使用比較運算子引發的子查詢,插入記錄時使用的子查詢
  • 多表連接,內連接,外連接,自連接,多表更新,多表洗掉
  • 創建,使用自定義函式
  • 創建存盤程序,使用存盤程序

mysql官網:

安裝包下載:(安裝操作)

點擊安裝:

產品配置的操作:

打開服務框用win+r,輸入services.msc

2. mysql目錄結構

  1. bin目錄:用于存盤一些可執行檔案
  2. include目錄:用于存盤包含的一些頭檔案
  3. lib目錄:用于存盤一些庫檔案
  4. share目錄:用于存盤錯誤資訊,字符集檔案等
  5. data目錄:用于放置一些日志檔案以及資料庫
  6. my.ini檔案:資料庫的組態檔

啟動與停止:

mysql引數:

引數描述
-u用戶名
-p密碼
-V輸出版本資訊并且退出
-h主機地址

3.常用命令

修改用戶密碼的命令:

mysqladmin 命令用于修改用戶密碼

mysqladmin 命令格式:

mysqladmin -u用戶名 -p舊密碼 password新密碼

顯示資料庫的命令

show databases;

使用資料庫的命令

use 資料庫的名稱

顯示當前連接的資訊

  1. 顯示當前連接的資料庫select database();
  2. 顯示當前服務器版本select version();
  3. 顯示當前日期時間select now();
  4. 顯示當前用戶select user();

4.操作資料庫(創建,修改,洗掉)

創建資料庫SQL

create database [if not exists] db_name
[default] character set [=] charset_name
create database database_name;

修改資料庫的語法格式:

alter database db_name 
[default] character set [=] charset_name

洗掉資料庫語法格式:

drop database [if exitsts] db_name;

5.資料庫-資料型別

了解資料型別:(借助圖書管理系統)

圖書類別表:

類別編號(category_id) 類別名稱(category) 父類別(parent_id)
1 計算機 0
2 醫學 0

圖書資訊表:

圖書編號(book_id) 類別編號(book_category_id) 書名(book_name) 作者(author) 價格(price) 出版社(press) 出版時間(pubdate) 庫存(store)

借閱資訊表:

圖書編號(book_id) 身份證號(card_id) 借出日期(borrow_date) 歸還日期(return_date) 是否歸還(status)

讀者資訊表

身份證號(card_id) 姓名(name) 性別(sex) 年齡(age) 聯系電話(tel) 余額(balance)

資料型別:

整型:TINYINT-1位元組 SMALLINT-2位元組 MEDIUMINT-3位元組 INT-4位元組 BIGINT-8位元組

浮點數型別和定點數型別:

float-4個位元組
double-8個位元組

decimal

日期時間型別:

字符型:

6.資料庫表結構的操作

  • 創建和查看資料表
創建資料表:create table

create table <表名>
( 
 列名1 資料型別[列級別約束條件][默認值],
 列名2 資料型別[列級別約束條件][默認值],
 ...
 [表級別約束條件]
);

  • 查看資料庫表:
show tables [from db_name];
  • 查看資料表基本結構:
show columns from tbl_name;

describe <表名> /DESC<表名>

show create table tbl_name;

  • 修改資料庫表

添加列:

alter table <表名>
 add <新列名> <資料型別>
  [ 約束條件 ] [first | after 已存在列名];

修改列名:

alter table <表名>
 change <舊列名> <新列名> <新資料型別>;

修改列的資料型別:

alter table <表名> MODIFY <列名> <資料型別>

修改列的排列位置

alter table<表名>
MODIFY <列1> <資料型別> FIRST|AFTER<列2>

洗掉列:

alter table <表名> drop <列名>;

修改表名:

alter table <舊表名> RENAME [TO] <新表名>;

  • 洗掉資料庫表
drop table [if exists] 表1,表2,...表n;

查看表磁區

創建表磁區:使用partition by型別(欄位)

使用values less than運算子定義磁區

create table bookinfo(
 book_id int,
 book_name varchar(20)
)
partition by range(book_id)(
 partition p1 values less than(20101010),
 partition p3 values less than MAXVALUE
);

7.子查詢

select price from bookinfo where book_id = 20101010;

select * from readerinfo;

update readerinfo set balance = balance-(select price from bookinfo where book_id = 20101010) * 0.05 where card_id = '2323232342sxxxxx';

什么是子查詢呢?

它是指嵌套在其他sql陳述句內的查詢陳述句,

select * from table1 where col1 = (select col2 from table2);
insert into bookcategory(category,parent_id)values('x',2),('y',2);


insert into bookinfo(book_id,book_category_id,book_name,author,price,press,pubdate,store)
values
(45245244, 6, 'x', '1,2,3 等', 115, '出版社', '2020-06-01',10),
(45342545, 6, 'y', '1, 2',27.8,  '出版社', '2020-07-01', 5);

update readerinfo set balance = 500 where card_id = '683246';

insert into borrowinfo(book_id,card_id,borrow_date,return_date,status)
values
(35452455,'5724154','2020-10-10','2020-11-10','否');

查詢借閱資訊表, 顯示借 xx這本書的借閱記錄

select * from borrowinfo where book_id = (select book_id from bookinfo where book_name = 'xx');

查詢圖書資訊表, 顯示圖書價格小于圖書平均價格的所有圖書資訊

select * from bookinfo where price < (select round(avg(price),2) from bookinfo);

查詢圖書資訊表,顯示圖書類別不是’資料庫’的所有圖書資訊

select * from bookinfo where book_category_id<>(select category_id from bookcategory where category = '資料庫');

查詢圖書資訊表,顯示圖書類別為’計算機’的所有圖書資訊

select * from bookcategory;

select * from bookinfo where book_category_id = ANY(select category_id from bookcategory where parent_id = 1);


select * from bookinfo where price > ANY (select price from bookinfo where book_category_id =4);  

select * from bookinfo where price > ALL (select price from bookinfo where book_category_id =4); 

查詢圖書資訊表,顯示圖書類別為’2’的所有圖書資訊

in 后面的子查詢回傳一個資料列,等于資料列里的任意一個值都是滿足條件的

select * from bookinfo where book_category_id in (select category_id from bookcategory where parent_id = 2);

select * from bookinfo where book_category_id = any (select category_id from bookcategory where parent_id = 2);

查看圖書類別表中是否有’y’的類別,如果有,則查看圖書資訊表

select * from bookinfo where exists (select category_id from bookcategory where category='y');

select * from bookinfo where exists (select category_id from bookcategory where category='x');

insert into select 陳述句從一個表復制資料,然后把資料插入到一個已存在的表中,

insert into table2 select * from table1;

需要創建一張罰款記錄資訊表,包含如下資訊:圖書編號、身份證號、應還日期、實際還書日期,罰款金額

記錄來源于借閱資訊表超出還書時間還未還書的讀者

create table readerfee(
	book_id int,
	card_id char(18),
	return_date date,
	actual_return_date date,
	book_fee decimal(7,3),
	primary key(book_id,card_id)
);

select book_id,card_id,return_date from borrowinfo where datediff(sysdate(),return_date)>0 and status = '否';

insert into readerfee(book_id,card_id,return_date) select book_id,card_id,return_date from borrowinfo where datediff(sysdate(),return_date)>0 and status = '否';

select * from readerfee;

身份證號為5461xxxxxxx的讀者將超限的圖書20201101歸還,根據描述實作如下需求:

  • 更新借閱資訊表,將借閱狀態(status)更新為‘是’,
  • 更新罰款記錄資訊表,更新實際還書日期和罰款金額,罰款金額為每超出一天扣0.2元,
update borrowinfo set status = '是' where book_id = 20201101 and card_id = '5461xxxxxxx';

select * from borrowinfo;

update readerfee set actual_return_date=sysdate(), book_fee=datediff(sysdate(),return_date)*0.2 where book_id = 20201101 and card_id = '5461xxxxxxx';

select * from readerfee;

8.mysql的約束

它事一種限制,通過對表的行或列的資料做出限制,來確保表的資料的完整性,唯一性,

表結構:

圖書(圖書編號book_id,類別編號book_category_id,書名book_name,作者author)

mysql中常用的幾種約束型別:

約束型別非空約束主鍵約束唯一約束默認約束外鍵約束
關鍵字not nullprimary keyuniquedefaultforeign key

圖書資訊表:

(圖書編號book_id,類別編號book_category_id,書名book_name,作者author,價格price,出版社press,出版時間pubdate,庫存store)

圖書類別表:

(類別編號category_id - 主鍵,類別名稱category - 唯一,父類別parent_id -非空)

讀者資訊表:

(身份證號card_id,姓名name,性別sex,年齡age,聯系電話tel,余額balance)

借閱資訊表:

(圖書編號book_id,身份證號card_id,借出日期borrow_date,歸還日期return_date,是否歸還status)

非空約束

null欄位值可以為空

not null欄位值禁止為空

非空約束

非空約束指欄位的值不能為空,對于使用了非空約束的欄位如果用戶在添加資料時,沒有指定值,資料庫系統會報錯,

列名 資料型別 not null

創建表時添加非空約束

create table bookinfo(
	book_id int,
	book_name varchar(20) not null
);

洗掉非空約束

alter table bookinfo modify book_name varchar(20);

通過修改表添加非空約束

alter table bookinfo modify book_name varchar(20) not null;

主鍵約束

主鍵約束:要求主鍵列的資料唯一,并且不允許為空,主鍵能夠唯一地標識表中的一條記錄,

主鍵的型別:

主鍵分為單欄位主鍵多欄位聯合主鍵

單欄位主鍵:是由一個欄位組成

在定義列的同時指定主鍵
列名 資料型別 primary key;

在列定義的后邊指定主鍵
[constraint<約束名>] primary key(列名);

創建表時添加主鍵約束

create table bookinfo(
	book_id int primary key,
	book_name varchar(20) not null
);
create table bookinfo(
	book_id int,
	book_name varchar(20) not null,
	constraint pk_id primary key(book_id)
);

洗掉主鍵約束

ALTER TABLE bookinfo DROP PRIMARY KEY;

通過修改表的方式添加主鍵約束

ALTER TABLE bookinfo ADD PRIMARY KEY(book_id);

多欄位聯合主鍵,復合主鍵

主鍵有多個欄位聯合組成,primary key(欄位1,欄位2,...欄位n);

create table borrowinfo(
book_id int,
card_id char(18),
primary key(book_id,card_id)
);

通過修改表為列添加主鍵

create table bookinfo(
 book_id int,
 book_name varchar(20) not null
);

alter table bookinfo modify book_id int primary key;
alter table bookinfo add primary key(book_id);
alter table bookinfo add constraint pk_id primary key(book_id);

唯一約束

唯一約束要求該列唯一,允許為空,唯一約束可以確保一列或者幾列不出現重復值,

語法規則:

列名 資料型別 unique

[constraint <約束名>] unique(<列名>)

創建表時添加唯一約束

CREATE TABLE bookinfo(
	book_id INT PRIMARY KEY,
	book_name VARCHAR(20) NOT NULL UNIQUE 
);

或:

create table bookinfo(
book_id int primary key,
book_name varchar(20) not null,
constraint uk_bname unique(book_name)
);

通過修改表的方式添加唯一約束

alter table bookinfo modify book_name varchar(20) unique;

ALTER TABLE bookinfo ADD UNIQUE(book_name);

alter table bookinfo 
add constraint uk_bname unique(book_name);

洗掉唯一約束

ALTER TABLE book_info DROP  KEY  uk_bname;

ALTER TABLE book_info DROP  INDEX  uk_bname;

唯一約束和主鍵約束的區別

  1. 一個表中可以有多個unique宣告,但只能有一個primary key宣告
  2. 宣告為primary key 的列不允許有空值
  3. 宣告為unique的列允許空值

默認約束

默認約束是指某列的默認值

列名 資料型別 default 默認值

創建表時添加默認約束

CREATE TABLE bookinfo(
	book_id INT PRIMARY KEY,
	press VARCHAR(20)  DEFAULT '出版社'
);

通過修改表的方式添加默認約束

ALTER TABLE bookinfo 
ALTER COLUMN press SET DEFAULT '出版社';

alter table bookinfo 
modify press varchar(10) default '出版社';

洗掉默認約束

alter table bookinfo modify press varchar(20);

ALTER TABLE bookinfo 
ALTER COLUMN press DROP DEFAULT;

外鍵約束

外鍵是用來在兩個表的資料之間建立鏈接,可以是一列或者多列,一個表可以有一個或者多個外鍵,

外鍵對應的是參照完整性,一個表的外鍵可以為空值,若不為空值,則每一個外鍵必須等于另一個表中主鍵的某個值,

作用:保持資料的一致性,完整性,

創建表時添加外鍵約束

圖書類別表(父表)
CREATE TABLE bookcategory(
	category_id INT PRIMARY KEY,
	category VARCHAR(20),
	parent_id INT
);

圖書資訊表(子表)
CREATE TABLE bookinfo(
	book_id INT PRIMARY KEY,
	book_category_id  INT,
	CONSTRAINT fk_cid FOREIGN KEY(book_category_id) REFERENCES bookcategory(category_id)
);

通過修改表的方式添加外鍵約束

ALTER  TABLE  bookinfo  
ADD  FOREIGN KEY(book_category_id) REFERENCES  bookcategory(category_id);

洗掉外鍵約束

ALTER TABLE bookinfo DROP FOREIGN KEY fk_cid;

外鍵約束的參照操作

cascade,從父表洗掉或更新且自動洗掉或更新子表中匹配的行

create table bookinfo(
 book_id int primary key,
 book_category_id int,
 constraint fk_cid foreign key (book_category_id) references bookcategory(category_id) on delete cascade);

創建圖書管理系統表

圖書類別表

create table bookcategory(
category_id int primary key,
category varchar(20) not null unique,
parent_id int not null
);

圖書資訊表

create table bookinfo(

book_id int primary key,
book_category_id int,
book_name varchar(20) not null unique,
author varchar(20) not null,
price float(5,2) not null,
press varchar(20) default '機械工業出版社',
pubdate date not null,
store int not null,
constraint fk_bcid foreign key(book_category_id) references bookcategory(category_id)

);

讀者資訊表

create table readerinfo(

card_id char(18) primary key,
name varchar(20) not null,
sex enum('男','女','保密') default '保密',
age tinyint,
tel char(11) not null,
balance decimal(7,3) default 200

);

借閱資訊表

create table borrowinfo(

book_id int,
card_id char(18),
borrow_date date not null,
return_date date not null,
status char(11) not null,
primary key(book_id,card_id)

);

9.資料庫表記錄的操作

單表資料記錄的插入

語法格式:

insert into table_name(column_list) values(value_list);

為表的所有列插入資料

insert into bookcategory
(category_id,category,parent_id)values
(1,'x',0);

insert into bookcategory values(2,'y',0);

為表的指定列插入資料

insert into readerinfo
(card_id,name,tel)values('4562135465','張飛','4651354651');

同時插入多條記錄

insert into bookcategory(category_id,category,parent_id)values(3,'x',1),(4,'y',1),(5,'z',2);

將查詢結果插入的表中

insert into bookcategory select * from test where id>5;

自動增加

設定表的屬性值自動增加:

列名 資料型別 auto_increment

創建表時添加自增列

create table bookcategory_tmp(
	category_id int primary key auto_increment,
	category varchar(20) not null unique,
	parent_id int not null
)auto_increment=5;

測驗自增列

insert into bookcategory_tmp(category,parent_id)values('dadaqianduan',0);

去掉自增列

alter table bookcategory_tmp modify category_id int;

添加自增列

alter table bookcategory_tmp modify category_id int auto_increment;

修改自增列的起始值

alter table bookcategory_tmp auto_increment = 15;

insert into bookcategory_tmp(category,parent_id)values('文學',0);

洗掉圖書資訊表的外鍵

alter table bookinfo drop foreign key fk_bcid;

為圖書類別表添加自動編號的功能

alter table bookcategory modify category_id int auto_increment;

恢復關聯

alter table bookinfo add constraint fk_bcid foreign key(book_category_id)references bookcategory(category_id);

單表資料記錄的更新

向借閱資訊表插入一條借閱資訊

insert into borrowinfo(book_id,card_id,borrow_date,return_date,status)values(20202010,46516874,'2020-11-29','2020-12-29','否');

更新讀者資訊表中的余額

查看書的價格   79.80
select price from bookinfo where book_id = 20202010;

更新余額

update readerinfo set balance = balance - 79.80*0.05 where card_id = '46516874';
select * from readerinfo;

更新圖書資訊表的庫存

update bookinfo set store = store -1 where book_id = 20150201;
select * from bookinfo;

單表資料記錄的洗掉

洗掉指定條件的記錄

delete from readerinfo where card_id = '46461265464565';

洗掉表中所有記錄

delete from readerinfo;

truncate table readerinfo;快

想要洗掉表中的所有記錄,可以使用truncate table陳述句,truncate將直接洗掉原來的表,并重新創建一個表,其語法結構:

truncate table table_name

查詢兒科學的類別編號

select category_id from bookcategory where category='兒科學';

洗掉圖書編號為5的圖書資訊

delete from bookinfo where book_category_id = 5;

洗掉圖書類別表中兒科學這個類別

delete from bookcategory where category = '兒科學';

單表資料記錄的查詢

查詢所有列

select * from bookcategory;

select category_id,category,parent_id from bookcategory;

查詢指定列

select category from bookcategory;

select category_id,category from bookcategory;

查詢指定條件的記錄

select book_id,book_name,price from bookinfo where press='出版社';

查詢結果不重復的記錄

select distinct press from bookinfo;

查看空值

select * from readerinfo where age is null;

分組

統計讀者資訊表中男讀者的人數

select count(*) from readerinfo where sex='男';

將讀者資訊表中的記錄按性別進行分組

select sex from readerinfo group by sex;

將讀者資訊表中的記錄按性別進行分組,并統計每種性別的人數

select sex,count(*) from readerinfo group by sex;

將讀者資訊表中的記錄按性別進行分組,分組后人數大于的性別

select sex from readerinfo group by sex having count(sex)>2;

排序

通過order by子句對查詢的結果進行排序

order by 列名 [asc|desc]

排序方向:

  1. 排序分為升序和降序,默認為升序
  2. 升序asc
  3. 降序desc

單列排序

select * from bookinfo order by price;

多列排序

select * from bookinfo order by price,store;

指定排序方向

select * from bookinfo order by price,store desc;

limit陳述句限制查詢記錄的數量

前3行記錄

select * from bookinfo limit 3;

從第3條記錄開始的后2條記錄

select * from bookinfo limit 2,2;

select * from bookinfo limit 2 offset 2;
insert into bookinfo(book_id,book_category_id,book_name,author,price,press,pubdate,store)
values
(454235424,4, '123', 'xxx',85.8, '出版社', '2020-04-01', 10),
(452454542,4, '456', 'xxx', 35.5, '出版社', '2020-08-01', 20),
(454578754,4, '789', 'xxx', 46.6, '出版社', '2020-05-01',8);

將圖書資訊按照庫存進行分組,統計每組庫存下的個數,然后按庫存進行降序排序,并查看結果中的前四條記錄

select store,count(*)from bookinfo 
group by store 
order by store desc 
limit 4;

10.運算子與函式

MySQL 主要有以下幾種運算子:

  1. 算術運算子
  2. 比較運算子
  3. 邏輯運算子
  4. 位運算子

算術運算子

比較運算子

邏輯運算子

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-y7CkZtkK-1600306739447)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/17f47bc51e8b48058fb92eb540b7acd8~tplv-k3u1fbpfcp-zoom-1.image)]

位運算子

運算子優先級

讀者的身份證號,姓名,電話,余額,

select card_id, name, tel, balance from readerinfo where balance-200<=0;

查看讀者資訊表中,余額大于200的讀者資訊,

select * from readerinfo where balance>200;

查看讀者資訊表中,余額不等于200的讀者資訊,

select * from readerinfo where balance <> 200;

查看讀者資訊表中,年齡不為空的讀者資訊,

select * from readerinfo where age is not null;

查看讀者資訊表中,余額在350到450之間的讀者資訊,

select * from readerinfo where balance between 350 and 450;
select * from readerinfo where name in('dada','dada1','dada2');

select * from readerinfo where name like '張_';

select * from readerinfo where tel like '135%';

select * from bookinfo where price>50 and store<5;

select * from bookinfo where price>80 or press = '出版社';

select * from bookinfo where price not between 50 and 100;

數值函式

ceil回傳大于x的最小整數值

select ceil(28.55); // 29

floor回傳小于x的最大整數值

select floor(28.55); // 28

四舍五入
round回傳最接近于引數x的整數,對引數x進行四舍五入

select round(28.55); // 29
select round(28.55,1),round(28.55,0),round(28.55,-1);
// 28.6 29 30

截斷函式

select truncate(28.55,1),truncate(28.55,0),truncate(28.55,-1);
// 28.5 28 20

取模,回傳x被y除后的余數

select mod(11,2); // 1
select book_id,book_name,price, round(price) from bookinfo;

select * from bookinfo where mod(book_id,2)=0;

字符函式

字串連接

select concat('hello','world');
select concat_ws('-','hello','world');

字母轉換大小寫

select lower('Hello World');
select upper('Hello World');

求長度

select length(' hello ');

洗掉空格

select ltrim(' hello '),length(ltrim(' hello '));
select rtrim(' hello '),length(rtrim(' hello '));
select trim(' hello '),length(trim(' hello '));

截取字串

select substring('hello world',1,5);

select substring('hello world',-5,2);

獲取指定長度的字串

select left('hello world', 5); // hello
select right('hello world', 5); // world

替換函式

select replace('hello world','world','mysql'); // hello mysql

格式化函式

select format(1234.5678,2),format(1234.5,2),format(1234.5678,0);
//1234.57 1234.50 12345

select book_id,book_name,format(price,2)from bookinfo;

日期和時間函式

查看當前的系統日期

select curdate();
// 2020-02-02
select curdate()+0;

select curtime()+0;

查看當前的系統日期和時間

select now(); // 2020-10-10 12:12:12

select sysdate(); // 2020-10-10 12:12:12

date_add(date,interval expr type): year,month,day,week,hour

日期的加運算
select date_add('2020-01-01', interval 5 month); // 2020-06-01

計算兩個日期之間間隔的天數
select datediff('2020-02-10','2020-02-01');

日期格式化
select date_format('2020-02-01', '%Y%m');

聚合函式(分組函式)

| 名稱 | 描述 |
| avg() | 回傳某列的平均值 |
| count() | 回傳某列的行數 |
| max() | 回傳某列的最大值 |
| min() | 回傳某列的最小值 |
| sum() | 回傳某列值的和 |

求圖書資訊表中,所有圖書的平均價格,

select avg(price) from bookinfo;

求圖書資訊表中,所有圖書的總價格,

select sum(price) from bookinfo;

求圖書資訊表中的最大庫存,

select max(store) from bookinfo;

求圖書資訊表中的最小庫存,

select min(store) from bookinfo;

求圖書資訊表中有多少種圖書,

select count(*) from bookinfo;

按類別進行分組, 查詢每種類別下有多少種圖書以及每種類別圖書的庫存總和,

select book_category_id as '圖書類別',count(book_id) as '圖書種類', sum(store) as '庫存總和' from bookinfo group by book_category_id;

資訊函式與加密函式

系統資訊函式

查看當前MySQL服務器版本的版本號
select version();

查看MySQL服務器當前連接的次數
select connection_id();

查看當前的資料庫名
select schema();

查看當前登錄的用戶名
select user();

加密函式

select md5('test');

create table myuser(
	username varchar(10),
	password varchar(35)
);

insert into myuser values('user1',md5('pwd1'));

select * from myuser;

select * from myuser where username = 'user1' and password = md5('pwd1');

select password('rootpwd');

set password = password('rootpwd');

select user,authentication_string from mysql.user;

11.多表連接查詢

多表連接查詢是從多個表中獲取資料,

由圖書資訊表:(圖書編號book_id,類別編號book_category_id,書名book_name

由圖書類別表:(類別編號category_id,類別名稱category,父類別parent_id)

獲取表:(圖書編號book_id,書名book_name,類別名稱category)

多表連接的語法結構:

table_reference
[INNER] JOIN | {LEFT|RIGHT} [OUTER] JOIN
table_reference
on conditional_expr

多表連接
通過查看圖書資訊表和圖書類別表
來獲取圖書編號、圖書名稱、圖書類別

select book_id,book_name,category from bookinfo inner join bookcategory  on bookinfo.book_category_id = bookcategory.category_id;

內連接

根據連接條件從多個表中查詢選擇資料,顯示這些表中與連接條件相匹配的資料行,組合成新記錄,(內連接就是兩者共同都有的

內連接的語法結構:

select column_list
from t1
[INNER] JOIN t2 ON join_condition1
[INNER] JOIN t3 ON join_condition2
...]
where where_conditions;

由于圖書借閱統計的需要,想查詢未歸還圖書的圖書編號,圖書名稱,身份證號,姓名,電話,歸還日期, 是否歸還,

select borrowinfo.book_id,book_name,borrowinfo.card_id, name, tel, return_date, status from borrowinfo
inner join bookinfo on borrowinfo.book_id = bookinfo.book_id
inner join readerinfo on borrowinfo.card_id = readerinfo.card_id
where borrowinfo.status = '否';

select t1.book_id,book_name,t1.card_id, name, tel, return_date, status from borrowinfo t1
join bookinfo t2 on t1.book_id = t2.book_id
join readerinfo t3 on t1.card_id = t3.card_id
where t1.status = '否';

外連接

外連接將查詢多個表中相關聯的行,

外連接分為:左外連接 left outer join;右外連接right outer join

根據業務需要,我們需要查看圖書類別表中的所有類別下都有哪些圖書,

select book_id, book_name, category from bookcategory
left join bookinfo on bookcategory.category_id = bookinfo.book_category_id
where parent_id<>0;

select book_id, book_name, category from bookinfo a
right join bookcategory b on b.category_id = a.book_category_id;

select * from bookcategory;

左外連接:顯示左表全部記錄,右表滿足連接條件的記錄,

右外連接:顯示右表全部記錄,左表滿足連接條件的記錄,

語法結構:

select column_list
from t1
left | right [outer] join t2 on join_condition1;

自連接

如果在一個連接查詢中,涉及的兩個表都是同一個表,這種查詢稱為自連接

查詢所有圖書類別的圖書類別編號,類別名稱,上級分類名稱,

select * from bookcategory;

select s.category_id as'圖書類別編號', s.category as '圖書類別名稱', p.category as'圖書的上級分類名稱' from bookcategory s
inner join bookcategory p
on s.parent_id = p.category_id;

多表更新

update 
table1 {[inner] join | {left|right} [outer] join} table2
on conditional_expr
set col1 = {expr1|default}
[,col2 = {expr2|default}]...
[where where_condition]

身份證號為432xxxxxx的讀者將超時的圖書86154歸還,根據描述實作如下需求:

  1. 更新借閱資訊表,將借閱狀態(status)更新為‘是’,
  2. 更新罰款記錄資訊表,更新實際還書日期和罰款金額,罰款金額為每超出一天扣0.2元,
  3. 同時更新讀者資訊表的余額,(在余額中扣除罰款金額)
update readerfee t1 join readerinfo t2 on t1.card_id = t2.card_id
set actual_return_date = sysdate(),book_fee=datediff(sysdate(),return_date)*0.2,balance = balance - book_fee
where t1.book_id = 86154 and t1.card_id = '432xxxxxx';

select * from readerinfo;

多表洗掉

delete table1[.*], table2[.*]
from table1 {[inner]join|{left|right}[outer]join} table2
on conditional_expr
[where where_condition]

圖書類別表,圖書資訊表:

由于業務需求,需要洗掉圖書類別表中在圖書資訊表中沒有圖書記錄的類別,

select book_id,book_name,category from bookcategory_bak t1
left join bookinfo_bak t2 
on t1.category_id = t2.book_category_id
where parent_id<>0;

delete t1 from bookcategory_bak t1
left join bookinfo_bak t2 
on t1.category_id = t2.book_category_id
where parent_id<>0 and book_id is null;

select * from bookcategory_bak;

需要洗掉圖書類別表的編程語言的類別,以及圖書資訊表中關于編程語言的圖書記錄,

select book_id,book_name,category_id,category from bookcategory_bak t1
inner join bookinfo_bak t2
on t1.category_id = t2.book_category_id;

delete t1,t2 from bookcategory_bak t1
inner join bookinfo_bak t2
on t1.category_id = t2.book_category_id
where t1.category_id = 3; 

多表連接

根據連接查詢回傳的結果:內連接(inner join),外連接(outer join),交叉連接(cross join),

根據連接條件所使用的運算子:相等連接,不等連接,

12.自定義函式

創建函式

CREATE FUNCTION 函式名(引數串列) RETURNS 回傳型別
BEGIN
	函式體
END

呼叫函式

SELECT 函式名(引數串列)

查看函式

SHOW FUNCTION STATUS;

洗掉函式

DROP FUNCTION IF EXISTS function_name;

函式:需要有回傳值,可以指定0~n個引數

創建自定義函式:

create function function_name([func_parameter])
returns type
[characteristics..] routine_body

Characteristics指定存盤函式的特性,取值舉例:

sql security{definer|invoker}指明誰有權限來執行,

definer表示只有定義者才能執行,

invoker表示擁有權限的呼叫者才可以執行,默認情況下,系統指定為definer,

comment 'string':注釋資訊,可以用來描述存盤函式,

函式體是由sql代碼構成,可以簡單的sql陳述句,如果為復合結構需要使用begin...end陳述句,復合結構可以包含宣告,流程控制,

select length('hello');
select date_format(pubdate,'%Y-%m') from bookinfo;

delimiter // 
create function ym_date(mydate date)
returns varchar(15)
begin
return date_format(mydate,'%Y-%m');
end//

delimiter;
select ym_date(pubdate) from bookinfo;

創建自定義函式:

語法格式:

create function function_name([func_parameter])
returns type
[characteristics...] routine_body
select length('hello');

select date_format(pubdate,'%Y-%m') from bookinfo;
delimiter //
create function ym_date(mydate date)
returns varchar(15)
begin
return date_format(mydate,'%Y-%m');
end//
delimiter ;

使用(呼叫)自定義函式
select ym_date(pubdate) from bookinfo;

實體分析函式:

創建一個函式
delimiter $$ --定界符
--- 開始創建函式
create function user_main_fn(v_id int)
returns varchar(50)
begin
--定義變數
declare v_userName varchar(50);
--給定義的變數賦值
select f_userName info v_userName from t_user_main
where f_userId = v_id;
--回傳函式處理結果
return v_userName;
end $$ --函式創建定界符
delimiter;

自定義函式兩個必要條件:引數,回傳值

創建自定義函式

create function function_name
returns
{string|integer|real|decimal}
routine_body

語法格式:

CREATE FUNCTION function_name([func_parameter])
RETURNS type
[characteristics … ] routine_body
  1. function_name : 函式名稱
  2. func_parameter : 函式的引數串列
  3. RETURNS type : 指定回傳值的型別
  4. Characteristics : 指定存盤函式的特性
  5. routine_body : 函式體

創建無參的自定義函式:

洗掉自定義函式

DROP FUNCTION [IF EXISTS] func_name;

SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H點:%i分:%s秒')

CREATE FUNCTION f1() RETURNS VARCHAR(30)
RETURN DATE_FORMAT(NOW(), '%Y年%m月%d日 %H點:%i分:%s秒');

SELECT f1();

復合結構體的函式

-- 將陳述句結束符改為$$,為了防止下面的函式將;看成是陳述句的結束
DELIMITER $$

CREATE FUNCTION adduser(username VARCHAR(20))
RETURNS INT UNSIGNED
RETURN
BEGIN
INSERT INTO table_1(username) VALUES(username);
LAST_INSERT_ID();
END;

-- 將分隔符改回來
DELIMITER ;

流程控制的使用

常用的流程控制陳述句:

  1. IF條件判斷陳述句-if
  2. CASE條件判斷陳述句-case
  3. WHILE回圈陳述句-while
  4. LOOP回圈陳述句-loop
  5. REPEAT回圈陳述句-repeat

13.存盤程序

區域變數以關鍵字DECLARE宣告

DECLARE var_name [, varname2, varname3 …] date_type [DEFAULT value];
例:DECARE num INT DEFAULE 10;

內部BEGIN…END塊中定義的變數只在該塊內有效

會話變數的作用范圍為整個程式

語法結果

create procedure proc_name([proc_parameter])
[characteristics...] routine_body
delimiter // 
create procedure selectproc1()
begin
select book_id, book_name, price, store from bookinfo;
end //
delimiter;

call selectproc();

洗掉存盤程序:

drop procedure [if exists] proc_name;
創建一個查詢圖書的編號、書名、價格和庫存的存盤程序,
delimiter //
create procedure selectproc1()
begin
select book_id,book_name,price,store from bookinfo;
end//
delimiter ;

呼叫存盤程序
call selectproc1();
創建查詢圖書編號、書名、圖書類別的存盤程序
delimiter //
create procedure proc1()
begin
select book_id,book_name,category from bookinfo t1
join bookcategory t2
on t1.book_category_id = t2.category_id;
end//
delimiter ;

call proc1();

設計一個存盤程序,洗掉一個讀者,并輸出剩余讀者的個數,
delimiter //
create procedure proc2(in cid char(18), out num int)
begin
delete from readerinfo where card_id = cid;
select count(card_id) into num from readerinfo;
end//
delimiter ;

select * from readerinfo;
call proc2('6545xx', @num);
select @num;


設計一個存盤程序,實作交換兩個數的處理,
delimiter //
create procedure proc3(inout num1 int, inout num2 int)
begin
declare t int default 0;
set t = num1;
set num1 = num2;
set num2 = t;
end//
delimiter ;

set @n1 = 3, @n2 = 5;
call proc3(@n1,@n2);
select @n1,@n2;

洗掉存盤程序
drop procedure proc1;
drop procedure  if exists proc2;

存盤程序和函式的區別

存盤程序,存盤程序實作的功能比較復制,功能強大,可以執行包括修改表等一系列資料庫操作,

存盤函式,實作的功能針對性比較強,

回傳值上的不同

存盤程序:可以回傳多個值,也可以不回傳值,只是實作某種效果或動作,

存盤函式:必須有回傳值,而且只能有一個回傳值,

引數不同

存盤程序:存盤程序的引數型別有三種,in,out,inout,

存盤函式:引數型別只有一種,類似于in引數,呼叫函式時需要按照引數的型別指定值即可,

語法結構

存盤程序,存盤程序宣告時不需要指定回傳型別,

存盤函式,函式宣告時需要指定回傳型別,且在函式體中必須包含一個有效的return陳述句,

呼叫方式

存盤程序,用call陳述句進行呼叫

存盤函式,嵌入在sql中使用的,可以在select中呼叫

14.事務

事務必須滿足的四個條件:

atomicity 原子性
consistency 一致性
lsolation 隔離性
durability 持久性

控制事務處理

rollback,回滾會結束用戶的事務,并撤銷正在進行的所有未提交的修改

commit,會提交事務,并使已對資料庫進行的所有修改稱為永久性的

savepoint identifier,允許在事務中創建一個保存點,一個事務中可以有多個savepoint

rollback to identifier,把事務回滾到標記點

事務處理主要有兩種方法

begin, rollback, commit來實作

  1. begin,start transaction開始一個事務
  2. rollback事務回滾
  3. commit事務確認


直接用set來改變mysql的自動提交模式

  1. set autocommit = 0 禁止自動提交
  2. set autocommit = 1 開始自動提交

innodb使用事務

從Mysql5.5版本開始,InnoDB是默認的表存盤引擎,

innodb是事務型資料庫的首選引擎,支持事務安全表,

MySql中 delimiter

默認下,delimiter是分號,在命令列客戶端中,如果有一行命令以分號結束,那么回車后,mysql將會執行該命令,


(告訴mysql解釋器,該段命令是否已經結束了,mysql是否可以執行了, )

什么是存盤引擎:資料庫存盤引擎是資料庫底層軟體組件,資料庫管理系統使用資料引擎進行創建,查詢,更新和洗掉資料的操作,

mysql的核心就是存盤引擎,

innodb存盤引擎

  • 它為mysql提供了具有提交,回滾和崩潰恢復能力的事務安全存盤引擎,
  • 對于處理巨大資料量的資料擁有很好的性能
  • innodb存盤引擎支持外鍵完整性約束
  • innodb被用在眾多需要高性能的大型資料庫站點上

設定存盤引擎:

  1. 設定服務器的存盤引擎
  2. 在組態檔my.ini中的mysqld下面設定需要的存盤引擎
  3. default-storage-engine=InnoDB
  4. 重啟mysql服務器
創建表(單個)設定存盤引擎
create table mytest(
 id int primary key,
 name varchar(10)
) engine = innodb default charset = utf8;

修改表的存盤引擎

alter table tablename engine = engineName

15.管理與維護

管理用戶

USE mysql;

select user from user;

權限表:存盤賬號的權限資訊表:user,db,host,tables_priv,columns_privprocs_priv

各個權限表的作用

tables_priv表用來對表設定操作權限;columns_priv表用來對表的某一列設定權限;procs_priv表可以對存盤程序和存盤函式設定操作權限,

使用CREATE USER陳述句創建新用戶

語法格式:

CREATE USER “user”@“host” [IDENTIFIED BY “password”];

使用DROP USER 陳述句洗掉用戶

語法格式:

DROP USER user[, user];

例:使用DROP USER洗掉賬戶"rose"@"localhost":
DROP USER "rose"@"localhost";

示例:

查看日志檔案的路徑
show variables like 'log_error';

創建新的日志資訊表
flush logs;

創建新的日志資訊表
mysqladmin -uroot -p flush-logs

點關注,不迷路

好了各位,以上就是這篇文章的全部內容,能看到這里的人都是人才,我后面會不斷更新技術相關的文章,如果覺得文章對你有用,歡迎給個“贊”,也歡迎分享,感謝大家 !!

達達前端 CSDN認證博客專家 CSDN博客專家
達達前端技術社群:囊括前端Vue、JavaScript、資料結構與演算法、實戰演練、Node全堆疊一線技術,緊跟業界發展步伐,一個熱愛前端的達達程式員,個人博客:http://dadaqianduan.cn/

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/78696.html

標籤:其他

上一篇:自動化辦公之excel教程(6):資料的分析和處理

下一篇:namenode不能啟動,日志內容如下,請各位大神指點一下,謝謝

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more